
Unity
文章平均质量分 60
Unity技巧
Thinbug
我是在94年开始学习电脑的,那时候互联网才开始起步,学习计算机相关知识只有书本,学习的道路举步维艰。CSDN刚开始还没有BLOG,只有论坛,所有的问题都是论坛里的大佬的指点,对我帮助很大。后来有了BLOG,我的BLOG也不用多次搬家了。我的所有文章都是免费的,希望我们中国的程序员在学习的道路上能够顺畅一些。也感谢CSDN能给中国程序员一个这样的环境。如果我的文章能帮到你,那么点赞就是对我最大的肯定。
精雕细琢,匠心之道。
展开
-
Unity崩溃后信息结合符号表来查看问题
在查看Unity打包的日志看到崩溃日志信息,其中一段是这样的。原创 2025-02-12 12:27:45 · 441 阅读 · 0 评论 -
C# 异步Task异常处理和堆栈追踪显示
在C#中异步Task是一个很方便的语法,经常用在处理异步,例如需要下载等待等方法中,不用函数跳转,代码阅读性大大提高,深受大家喜欢。但是有时候发现我们的异步函数可能出现了报错,但是异常又没有抛出,导致我们不知道,我们下面来根据代码来分析解决。原创 2024-11-13 11:36:35 · 780 阅读 · 0 评论 -
Unity 克隆Timeline并保留引用
我们选中PlayableDirector对象,然后点击克隆Timeline菜单,就直接复制了。Timeline的资源是.playable文件,简单的复制不会保留引用关系。然后我们可以把TL1复制一份,这样就2个Timeline都有引用关系了。"JFrameWork/Resources/克隆 Timeline""JFrameWork/Resources/克隆 Timeline"下面的脚本可以复制引用关系。原创 2024-10-09 15:42:08 · 627 阅读 · 0 评论 -
Unity 自定义DownloadHandlerScript指定Buff大小来下载文件
有几个大视频文件下载,非常大,直接使用默认UnityWebRequest下载,占用内存很大。使用DownloadHandlerScript类来自定义每次下载的buff大小,可以节省内存。原创 2024-09-06 15:31:34 · 633 阅读 · 0 评论 -
Unity 编写自己的aar库,接收Android广播(broadcastReceiver)并传递到Unity
编写本文是因为找了很多文章,都比较片段话也不容易理解,对于Android新手来说理解起来不友好,我这里写了一个针对比较小白的文章,希望有所帮助。原创 2024-08-13 12:43:28 · 1500 阅读 · 0 评论 -
Unity 编写自己的aar库,并通过AndroidJavaProxy调用访问和返回
我们首先创建一个空项目,我们不需要Activity,所以可以选择NoActivity。输入一个包名,我们用不到这个主app包名。项目创建好后,再创建新Module左边我们选择AndroidLibrary,然后输入包名,这个包名在Unity中需要输入。然后我们编写两个脚本,一个是Interface,一个是类。这里要注意,在Unity中我们通过AndroidJavaProxy调用的只能是interface。然后我们直接Build生成的arr会在。原创 2024-08-12 18:34:05 · 716 阅读 · 0 评论 -
Unity复制资源目录并添加新的引用关系
有时候需要复制一个场景目录制作新的场景,打包场景也是独立资源,不希望资源复用。我们直接使用Ctrl+D复制资源,里面的预设,材质等都还是指向原有的,所以废话不多说,直接上代码。原创 2024-08-05 17:02:10 · 623 阅读 · 0 评论 -
Unity 调试死循环程序
如果游戏出现死循环如何调试呢。原创 2024-07-19 10:56:39 · 517 阅读 · 0 评论 -
Unity小技巧-通过Unity脚本获取安卓端VersionCode
Unity小技巧-通过Unity脚本获取安卓端VersionCode。原创 2024-06-27 18:54:28 · 643 阅读 · 0 评论 -
Unity URP下通过相机让部分Render不受后处理渲染
我们看到最终Game视图里的就出现了没有后处理的盒子。我们可以优化一下程序,在需要的时候打开,不需要的时候关闭掉。原创 2024-06-18 11:58:38 · 1822 阅读 · 0 评论 -
Unity SetParent第二个参数worldPositionStays的意义
具体有什么区别呢,这里写一个测试例子来详细说明,先上代码下图中:红色是parent,在(1,1,1),白色盒子是要改变parent的对象,在(0,3,0)默认位置。原创 2024-05-28 13:51:43 · 751 阅读 · 0 评论 -
Unity VR在编辑器下开启Quest3透视(PassThrough)功能
现在有个需求是PC端串流在某些特定时候需要开启透视。我研究了两天发现一些坑,记录一下方便查阅,也给没踩坑的朋友一些思路方案。先说结论,如果要打PC端或者在Unity编辑器中开启,那么OpenXR当前是不行的可能还需要一个长期的过程,必须需要切换到Oculus。当然Unity官方指出使用ARFoundation的混合现实可以做到,具体。因为当前项目是OpenXR框架的,所以想在改动比较小的情况下进行。所以直接切换XR Plug-in Management到Oculus就好了。原创 2024-05-09 17:04:42 · 2343 阅读 · 5 评论 -
Unity Timeline学习笔记(5) - 自定义轨道切片上变量Transform对象丢失,使用ExposedReference来解决。
我在中后来又引用了Hierarchy中的Transform对象Transform obj,发现一些问题。要么无法拖入进去对象,要么拖入进去保存后,再次编辑或者运行的时候发现obj丢失了。我们还是用修改下笔记(4)的部分代码来解决。"玩家固定(Transform)Clip""固定玩家的Transform""结束后返回原始位置"我们需要把面板值加上ExposedReference来添加引用。然后创建的时候通过fixedTransform.Resolve来赋值就可以了。原创 2024-04-30 16:48:42 · 690 阅读 · 1 评论 -
Unity Timeline学习笔记(4) - 自定义轨道OnCreateClip和CreateTrackMixer用法上的区分
前面我们第二篇文章是一个初步的PlayableTrack使用方法,有时候可能会个性化定制专属轨道。原创 2024-04-26 15:21:02 · 1712 阅读 · 2 评论 -
Unity Timeline学习笔记(3) - SignalTrack信号轨道和自定义带参数的Marker信号和轨道
我们创建一个普通的接收脚本。Debug.Log("接收到信号"+sig);然后我们建立两个接收器来接收这两个信号。这里就是比较麻烦的地方,因为int参数是在接收脚本上的,所以需要两个接收。原创 2024-03-14 11:59:28 · 2016 阅读 · 0 评论 -
Unity Timeline学习笔记(2) - PlayableTrack
我们运行看看这些函数是如何触发的。我们看到在编辑器运行后,首先进入的就是OnGraphStart和OnBehaviourPause。当播放到脚本块后,刚进入就进入了OnBehaviourPlay,当播放出了脚本块后会调用OnBehaviourPause,当整个Timeline结束后会调用到OnGraphStop。基本上都很好理解,只有这个OnBehaviourPause比较特殊,相当于Timeline在调用播放激活的时候会调用一次,不管是不是在当前滑块范围内(滑块在第一帧)。原创 2024-03-14 10:28:42 · 1262 阅读 · 0 评论 -
Unity Timeline学习笔记(1) - 创建TL和添加动画片段
Timeline在刚出的时候学习了一下,但是因为一些原因一直都没用在工作中使用。版本也迭代了很久不用都不会用了,抽时间回顾和复习一下,做一个笔记后面可以翻出来看。原创 2024-03-14 09:36:37 · 862 阅读 · 0 评论 -
Unity编辑器功能Inspector快捷自动填充数据和可视化调试
我们有时候可能需要在面板增加一些引用,可能添加脚本后要手动拖动,这样如果有大量的脚本拖动也是不小的工作量。原创 2024-03-05 12:22:24 · 741 阅读 · 0 评论 -
Unity将4个纹理图拼接成1个纹理
这里要注意,需要把图的WrapMode改为Clamp,repeat会有接缝。这里随便放一个切分的图。原创 2024-02-26 11:41:19 · 766 阅读 · 0 评论 -
Unity下使用Sqlite
sqlite和access类似是文件形式的数据库,不需要安装任何服务,可以存储数据,使用起来还是挺方便的。首先需要安装DLL。原创 2024-02-13 17:55:13 · 2087 阅读 · 1 评论 -
Unity关于纹理图片格式带来的内存问题和对预制体批量格式和大小减半处理
我们经常会遇到内存问题,这次就是遇到很多图片的默认格式被改成了RGB32,导致Android打包后运行内存明显增加。原创 2024-01-17 18:48:29 · 841 阅读 · 0 评论 -
Unity URP切换品质和Feature开关的性能问题
现在对我的项目进行安卓端发布,需要切换品质和一些Feature开关。我是这样做的。原创 2024-01-17 18:27:18 · 957 阅读 · 0 评论 -
Unity2022.3打包Android后从AB包加载场景发现丢失大量脚本问题
这两天遇到一个问题,在VR项目打包Android的时候,加载场景后,Timeline工作不正常,找不到原因。原创 2024-01-12 14:35:15 · 1117 阅读 · 0 评论 -
Unity场景ab包加载压缩(LZ4,LZMA)格式的测试
LZMA通过UnityWebRequestAssetBundle加载的LZMA格式AB包将自动重新压缩为LZ4压缩,并缓存在本地文件系统上。而通过自己写的下载方案,则可以调用AssetBundle.RecompressAssetBundleAsync API重新压缩。方法来载入,大概需要5.5-7秒时间。LZ4的压缩方式解压速度非常快和无压缩相差不大,压缩后大小比无压缩强的多,这种不需要从公网下载资源的推荐LZ4。最近场景越来越大,大概800M的场景加载时间可能长达40秒左右,所以需要测试看看发生了什么。原创 2023-11-06 17:44:53 · 1244 阅读 · 0 评论 -
Unity把UGUI在WorldSpace模式下显示到相机最前方
再VR里有时候要把3D的UI显示到相机最前方,加个UI相机会坏事,可以通过修改unity_GUIZTestMode来解决。Unity把UGUI再World模式下显示到相机最前方。场景包含一个红色的盒子,一个UI里含有这些元素。原创 2023-09-27 11:47:17 · 1597 阅读 · 0 评论 -
Unity用相机实现的镜子效果
代码的原理就是把相机拍摄到的图给Quad的Texture,脚本根据人物的位置来改变位置,并计算近裁面,这里因为有旋转,所以镜子后面最好不要有东西,否则相机会拍摄到,或者用层来避免拍摄到的问题。mirror是镜子,挂着我们的脚本,Quad是一个面片。里面的test1是我用来调试位置的球。画质可以修改maxResolution ,disableDis 是20米距离就不进入Update了,可以节省一些性能,根据自己情况来。玩家就是一个胶囊,里面的eye位置把玩家视角的相机放上去,其他没什么特别的。原创 2023-09-20 18:47:30 · 1222 阅读 · 2 评论 -
Unity限制在一个范围内移动
在地图上放了一个小球,让他移动,但是不想让他掉下去,限制在一个球星范围内,就好像绳子拴住了一样,可以这样来实现。这个例子中,我们学习Vector3.ClampMagnitude的用法,限制小球在范围内移动。模拟杆子上有绳子牵制他在一定范围内。我的小球上挂的刚体,物理摩擦力0。原创 2023-08-07 18:13:41 · 2744 阅读 · 0 评论 -
Unity 限制范围-限制在4分之一圆柱形范围内活动
上面的代码就是计算hand在第二象限的限制,首先我们观察到dot 在第二象限是 0 ~ 1 的范围,dot2是 -1 ~ 0 ,当超过这个范围了,我们可以通过GetIntersectWithLineAndPlane函数来计算超过这个结界的碰撞点,防止出界。在我的游戏中,玩家的两只手操控中,不想让他们的手围着自己在一个圆形范围内随便乱跑,左手只想让他在左上角,右手在右上角范围活动。当我们移动到背后的时候,小球最多和我们平行,当小球移动到右边的时候那么最多知道面前,而且不会进入玩家模型范围。原创 2023-07-13 16:15:06 · 692 阅读 · 0 评论 -
AutoHand第三人称的AutoHandVRIK开启和关闭
需要把手部的当前追踪follow改为AutoHandVRIK脚本leftHandFollowTarget和rightHandFollowTarget(也就是原始模型手原来的Transform位置),并且把主VRIK和副VRIK的Weight通过渐变函数改为0,这里改副VRIK的原因是启用IK的时候希望副手的位置也在当前原始点。把手部的follow换回原始的副VRIK的手部位置(这个是AutoHandVRIK在初始化时候处理的,所以我们按照他的思路来)。然后再把VRIK的Weight渐变为1就可以了。原创 2023-07-11 15:20:22 · 531 阅读 · 0 评论 -
Unity 新输入系统InputAction设置按键的阈值
但是这里有个问题,QuestPro的Grip按键很容易被误触,稍微碰一下就触发了,那么如何来设置触发的阈值呢,网上找了很多都没看到有这样的文章,经过研究,下面的方法可以实现。有更好的方法还望不吝赐教。在新的输入系统中,如果添加一个手柄按键只需要添加Pressed就够了,监听他的三个动作就可以得到按下,点击,抬起。可以尝试把Action分解成3个,每个单独去设置PressPoint。类型我都选择了Axis。原创 2023-07-04 10:10:34 · 547 阅读 · 0 评论 -
Unity中通过字符串获得Type.GetType
在Unity中通过System.Type.GetType(“类”) 不能直接使用。这里有个缺陷就是获取到第一个类型相同的就返回了,可以自行处理。我们可以通过下面的方式来获得。原创 2023-06-02 10:50:45 · 1139 阅读 · 0 评论 -
VR穿墙处理的三种方式(视线遮挡和胶囊物理挤压和头部物理挤压)
VR穿墙处理的三种方式(视线遮挡和胶囊物理挤压和头部物理挤压)原创 2023-03-07 18:28:31 · 756 阅读 · 0 评论 -
Unity捕获Curl error 28的办法
Unity的UnityWebRequest如果设置了timeout,在超时后会有一个。核心思想就是不用timeout,直接3秒后就判断就是下载到了。的报错,很是讨厌,强迫症患者可以用下面的办法过滤掉。原创 2023-02-23 19:10:12 · 2298 阅读 · 0 评论 -
Unity胶囊物理移动和碰到墙壁无法移动的问题
那么这里需要判断,如果玩家按下了按键,并且不在地面的时候,物理材质给一个系统默认的刚体材质0.6,0.6,如果玩家在地面,那么需要给刚体一个Zero摩擦物理材质,这样可以降低移动中碰到墙体无法移动的问题。如果这时候如果碰到了墙壁,例如面向墙壁45度,这时候就被卡住了,游戏通常会用脸茨(贴)着墙壁移动。这样就可以控制刚体跳跃,飞行等复杂多样的物理运动。对于移动来说可以直接设置刚体的速度。通常我自己制作玩家移动并且是物理的时候,我都喜欢自己去写。可以借鉴FinalIK中的控制代码。这样就可以实现物理移动了。原创 2023-02-07 10:26:32 · 1433 阅读 · 0 评论 -
Unity通过SerializedObject修改SpriteAtlas的属性Include In Build
我们的图集打包的时候是独立打AB包的,所以需要关闭Include in Build,如果自动关闭这个属性呢。最后我们写一个函数,这样在打包时候调用,可以防止多余的资源被打入包体。可以通过SerializedObject来实现。我们发现是m_BindAsDefault属性。原创 2022-11-17 10:22:48 · 930 阅读 · 0 评论 -
Unity里通过FindTexture使用内建Icon图标
我们在Unity中有时会制作自己的编辑器,有时可能想用一些编辑器内部的图标,比单独去找图标资源方便,直接使用系统中内建的图标就很方便。如下图中的图标:例如文件夹图标可以这样获得到每个图片都有一个名字,有哪些名字呢,在官网没找到,但是在Github上有一个图标名字的列表在这里。只有名字也不方便浏览,在这里有一个UnityEditorIcons脚本,直接可以显示这些图标,如果Unity版本迭代更新,可能还会有更新。工具也比较简单,直接把代码贴上来,放在Editor目录中。在Unity编辑器中点击菜单项T原创 2022-09-20 18:09:02 · 2544 阅读 · 0 评论 -
Unity使用Remote直接在手机上调试游戏
Unity上使用Remote直接在手机上调试游戏原创 2022-08-15 18:11:47 · 5433 阅读 · 1 评论 -
Unity自定义属性面板Inspector面板和userData数据保存
Unity自定义属性面板Inspector面板和userData数据保存原创 2022-08-10 11:39:34 · 3488 阅读 · 0 评论 -
Unity使用ConfigurableJoint实现物理拖拽物体
我们把鼠标放开也一起写了,放上全部代码。//UTF8支持 public class CDrag : MonoBehaviour {if(joint!} } }//UTF8支持 public class CDrag : MonoBehaviour {原创 2022-08-02 19:38:24 · 1791 阅读 · 0 评论 -
Unity 使用StateMachineBehaviour让动画控制器状态自动关闭跳出
Unity 使用StateMachineBehaviour让动画控制器状态自动关闭跳出原创 2022-07-05 11:40:13 · 1486 阅读 · 0 评论