- 博客(10)
- 问答 (2)
- 收藏
- 关注
原创 Linear01Depth线性深度值与非线性深度值转换
得到观察空间的Z值后就很容易了 我们这里需要的是[N/F,1] ,原值域为[-F,-N]那直接除以F再取反就可以了。这里的非线性深度为[-1,1]的原始非线性深度,Unity中采样得到的非线性深度在[0,1]中,后续计算需要处理。然后非线性深度D1=F+N/F-N + 2FN/[(F-N) * Z1],由投影矩阵直接计算得出,这里省略。Linear01Depth这东西,传进去的是非线性的0 1深度值 ,在[0,1]的值域为[N/F,1]。将D1转换为D2并移动式子可以得到Z1,即观察空间中的Z值。
2025-02-03 21:29:07
215
原创 Unity 移动端UI输入与IPointerHandler问题
也就是说 当我在Button上松开手指的时候 只会执行Text文本脚本上的OnPointerExit 而不会再向上去执行Button的OnPointerExit。Button显然继承了这个接口 这就会导致Button的OnPointExit不执行 导致Button状态错乱。我的问题便是Button下的Text上挂在了一个脚本 里面继承了IPointerExitHandler。这里自己做一个记录 也是非常奇怪像这样的问题我居然在网上完全搜不到 难不成全是用的新输入系统了。
2024-10-11 16:26:34
425
原创 Unity 在子物体固定宽度的情况下父物体高度自适应
最近遇到一个需求 ScrollView中的子物体y是不一样的。自己写了一个丑陋的脚本 这里记录一下。
2024-09-24 11:19:19
414
原创 xLua 与 c# 转换注意事项
Lua的function可以有多个返回值,c#中的return显示不合适。这个函数的返回值是Bool 参数是String 和 out value。这个时候可以使用ref和out(推荐使用out 不需要在外部赋值)lua函数的return 其返回值会赋值给out中的变量。使用TryGetValue的时候可以验证1中的多返回值。需要使用:(冒号) 类的静态方法则使用.(点)调用。当print的时候 会同时打印True 和 123。out变量不需要赋值 会自动变成返回值。在Lua中调用C#类的成员方法时。
2024-03-30 22:45:02
344
原创 Lua 实现类面向对象功能
在self.x = self.x + 1时 self.x会发现对象本身没有x对象这个属性,所以就会去寻找父类中的属性,所以类(父类)中的属性作用是提供一个未定义时的默认值。这样做的目的是让父类方法中的self不再是base——即父类,而是对象本身,这样就可以让对象本身创建出属于自身的属性。当然,属性也是一样可以找到,但是并不能这么做,因为这样所有对象的属性就将会是“公用的”,这个时候“对象”就可以访问类中的方法,不过对象的属性时,应该注意。,这样就可以通过base属性一层一层向上找到所有继承的类中的方法。
2024-03-29 20:31:15
212
1
原创 Unity 世界坐标转屏幕坐标
将世界坐标转换为屏幕坐标时只需要注意 屏幕坐标的y相当于世界坐标的z 转换后再使用LookRotation获取看向方向。如果使用ScreenPointToRay发出射线射向地表固然可行 但涉及碰撞体 设置起来也很麻烦。因为我们需要的旋转效果和在屏幕坐标上比对是相同的二维旋转 所以可以使用这种方式。因为屏幕坐标和人物或物体在XZ平面上的几何概念上是相同的。做个笔记,让物体跟着鼠标的位置旋转是一个很寻常的需求。想了想使用了世界坐标转屏幕坐标的方法。
2024-03-25 23:13:57
803
原创 Unity 生命周期初始化Awake及Start
之前创建物体的时候 一不小心把Init初始化写到start里了 产生了一个很经典的Bug 在此做个笔记加深一下影响 防止自己以后还出现这种错误。很多时候会有动态创建物体的需求 这个时候 被创建的物体的初始化工作就会变得非常重要 特别是涉及到UI管理或者数据管理单例类 很容易出现。可以看到Awake和OnEnable会立刻执行 而start会等到本次Update结束 下次Updaye之前执行。Unity为物体初始化准备了三个生命周期函数:Awake 、OnEnable 、Start。
2024-03-22 14:14:03
973
1
原创 Unity videoplayer判断视频结束与视频结束执行委托
使用videoplayer.frame == videoplayer.clip.frameCount的时候发现没有用 输出后发现当视频停止播放后 frame的大小要比frameCount小1。再就是赋值改变videoplayer.time再输出videoplayer.time不会马上变化 需要几帧的时间才能完成 原因暂时不知。或者添加videoplayer.loopPointReached委托也行 即使loop为false 也会开启。
2023-12-12 14:00:04
1044
空空如也
Unity Tmp_InputField不显示光标
2025-04-29
Unity IOS端部分Button无法响应离开事件
2024-10-10
AB包中的Lua文件应该怎么require
2024-06-17
Unity的Async API和开线程的异步方法有什么区别?
2024-06-12
VisualStudio自动补全多出空格
2024-05-23
Unity代码控制物体渲染延迟问题
2024-05-19
C# 无法获取SocketAsyncEventArgs的Buffer
2024-05-06
Unity摄像机Vector3.Lerp跟随问题
2024-02-21
如何自行设置一个类内 对象成员的个数?
2022-05-20
对象成员应如何初始化?
2022-05-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人