测试文章
博客整体搬迁到了Hexo,正在缓慢恢复以前的Log,有空写一篇GithubPages+Hexo的建立步骤记录
这是一篇测试文章,同时记录一些Hexo相关的信息
众所周知,在Unity中挂载了MonoBehaviour
脚本的物体将遵循Unity的生命周期执行Tick,常用的api和顺序如下:
1 | Awake(); |
但是,如果在物体A的任意一个生命周期阶段中通过AddComponent
方法添加了另一个组件B,组件B和组件A的执行顺序是怎么样的呢?
这篇Blog是以往工作中编写的一个场景管理器的说明文档,它的主要功能是管理游戏内场景跳转、视图状态和UI的生命周期。虽然管理器本身已经停止使用和维护,但其中的一些思考成果依然对我有效,故在此记录并归档。
话说回来,现在看来这套东西的启动效率其实有点低啊(笑
世界坐标→屏幕坐标→UI坐标
1 | Vector3 screenPos = (Camera)mainCamera.WorldToScreenPoint(worldPos); |
关于tex2D的数据结构和一些工作方式
纹理(Textures)储存数值数据,每个通道的值范围一般在0.0到1.0之间(例如rgba
)。不同的纹理各自有不同的最大/最小值范围,不同的精度级别,和不同的伽马曲线,但着色器从tex2D()
得到的值形式总是一个包含四个分量的浮点向量。
DrawCall与Batch N:1
建议:一个材质→多个Render
通过
System.Reflection
命名空间中包含的类型,可以写代码来反射(或者说“解析”)这些元数据表。实际上,这个命名空间中的类型为程序及或模块中包含的元数据提供了一个对象模型。
——《CLR via C#》
简单来说,反射就是程序通过读取“编译器创建的元数据表”来获得程序集、模块、类型本身信息(属性)的功能。
1 | public bool ScreenPoitToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint) { |
要再获得ui的本地坐标的话就rectTransform.InverseTransformPoint(worldPoint)