- 博客(22)
- 收藏
- 关注
原创 Unity学习笔记之——ugui的性能优化
(1)一个Canvas下的所有UI元素都是合在一个Mesh中的,过大的Mesh在更新时开销很大,一般建议每个较为复杂的UI界面,都创建一个Canvas(可以是子Canvas),在UI界面很复杂时,甚至要划分更多的子Canvas,而Canvas又不能细分的太多,因为会导致DrawCall的上升;如果子画布中包含的元素发生变化(除了子画布中的UI被SetActive切换活动状态),则只会运行子画布的重建,而不会运行父画布。重建过程的成本很高,如果执行太多次,或Canvas中的ui数量很大,性能就会受影响。
2025-02-27 14:49:05
647
原创 Unity学习过程中遇到的小坑
本质是Vector3不但是结构体而且是一个属性,我们通过属性和方法获取到的结构体实际上获取到的是一个值拷贝,值类型在通过方法传递的时候,所传递的只是值的副本。——用属性和方法返回的类的实例,是可以修改其字段的。——用属性和方法返回的结构体是不能修改其字段的。——直接访问公有的结构体是可以修改其字段的。
2024-03-06 18:28:19
473
1
原创 Unity学习笔记之——委托与事件
如果要把方法作为函数来进行传递的话,就要用到委托。简单来说,委托是一个类型,这个类型可以赋值一个方法的引用。C#的委托通过delegate关键字来声明。属于引用类型Action<T>是.Net Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显式声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有一个通过值传递给它的参数。而且不能有返回值。还有一种是非泛型委托Action。Func是.Net Framework内置的。
2024-02-19 19:55:46
1903
2
原创 Unity学习笔记之——C#基础 构造函数和析构函数
特别需要注意的是,在Unity环境下,MonoBehaviour的构造函数和析构函数都是在另外的线程中被调用的,而不是在游戏的主线程中。因此,在这些函数内部不能调用任何非线程安全的UnityEngine相关的API。构造函数是一种特殊的成员函数,它在创建类的对象时由系统自动调用。每当创建对象时,如果需要添加一些初始化代码,比如设置初始状态或者分配内存空间等,就需要定义自己的构造函数。析构函数也是一种特殊的成员函数,但它的调用时机与构造函数相反。当对象超出范围或被销毁时,系统会自动调用析构函数。
2024-01-12 13:09:16
937
1
原创 Unity委托事件触发的协程是在注册的主线程还是触发的主线程上运行
(记录一下,在做减速子弹功能时,我本来打算在【子弹类】的update函数中调用【敌人类】里的减速方法,并在减速方法中开启了一段计时的协程,但是预料到该协程会在子弹隐藏后被中断,于是申明了一个委托事件,在对象池类中生成子弹的时候注册这个事件。不太确定在委托事件中触发的协程会在哪段线程上运行,查不到资料,以下说法来自ai,有不对的求大佬指教)当委托事件触发时,协程会在注册的主线程上执行。这意味着协程可以与主线程同时运行,并在主线程运行的同时开启另一段逻辑处理,类似于一个子线程单独处理一些问题,性能开销较小。
2024-01-10 15:39:10
559
原创 Unity学习笔记之——.meta文件
meta 文件的作用简单来说是建立 Unity 与资源之间的“桥梁”,是用于辅助管理Unity资源文件的文件。必须明确的意识到 Meta 文件是被关联到特定的资源上的,如果删除了一个 meta 文件, Unity 会认为原始的资源文件已经被删除,然后为这个“ 新的 ” 资源文件生成一个新的 GUID。Unity 会维护一个自己资源列表,在将资源导入 Unity 的时候, Unity会先检测这个资源列表,然后为导入的资源分配一个唯一的 ID ,在Unity 中会使用此 ID 来引用资源。
2024-01-10 10:23:47
3030
原创 Unity学习笔记之——常用Mathf函数
限制value的值在min和max之间, 如果value小于min,返回min;这个函数可以用来平滑任何一种值,位置,颜色,标量。返回参数 f 中指定的数字或表达式的下限值。t值永远不会大于length的值,也永远不会小于0。这个函数可以用来平滑任何类型的值,位置,颜色,标量。t值永远不会大于length的值,也永远不会小于0。currentVelocity——当前速度,这个值在你访问这个函数的时候会被随时修改。currentVelocity——当前速度,这个值在你访问这个函数的时候会被随时修改。
2024-01-05 17:27:25
5663
1
原创 Unity学习笔记之——关于角度和方向
不要单独设置某个 eulerAngles 轴(例如,eulerAngles.x = 10;),这会导致偏差和不希望的旋转。在将它们设置为新值时,请一次性设置所有 eulerAngles 轴。例如起始位置为(0,0,0),绕Y轴旋转200度到(0,200,0),物体会顺时针旋转160度而不是逆时针旋转200度。在Unity里,tranform组件有一个变量名为rotation,它的类型就是四元数。可以理解为速度,通常取值为0< t <= 1。四元数旋转有个重要的特性就是:到达终止方向的旋转角度为旋转方向。
2024-01-05 15:44:17
777
1
原创 Unity学习笔记之——Tags&Layers
1.为游戏物件分类;2.让camera指定哪些物件要被画出来;3.让light指定哪些物件要被照明;4.让物理射线确认哪些物件要被侦测到;5.Layers最多设定32个 ,目前8个预设不可更改。Layer是相机的相对深度值的渲染CullingMask层级。1.为游戏物件分类;2.方便查找游戏物件;3.与其他物件碰撞时的判断;4.在Tags&Layers中没有数量上限。SortingLayer是UGUI中Canvas画布的渲染层级。
2023-12-20 11:42:52
468
1
原创 Unity学习笔记之——协程相关
yield return new WaitWhile()//将协同执行直到 当输入的参数(或者委托)为false的时候.... 如:yield return new WaitWhile(() => frame < 10);yield return new WaitUntil()//将协同执行直到 当输入的参数(或者委托)为true的时候....如:yield return new WaitUntil(() => frame >= 10);//(任意数字) 下一帧再执行后续代码。// 下一帧再执行后续代码。
2023-12-13 11:26:23
615
1
原创 Unity学习笔记之生命周期函数
生命周期函数,是系统定义好的,运行时自动调用,但。生命周期函数就是该脚本对象依附的GameObject对象从出生到消亡整个生命周期中会通过反射自动调用的一些特殊函数。正是因为继承了 MonoBehaviour 这个类,Unity 才能依次调用我们的脚本代码,执行游戏逻辑。
2023-11-26 16:22:29
2017
1
原创 Unity学习笔记之整体UI适配屏幕
1、将UI Scale Mode设置成ScaleWithScreenSize。2、ReferenceResolution根据开发时使用的屏幕的分辨率设置。3、横屏游戏将Match拖到最左边,竖屏游戏将Match拖到最右边。在Canvas的面板中找到Canvas Scale组件。
2023-11-23 23:35:33
944
原创 Visual Studio常用快捷键
快捷键 操作 Ctrl+Shift+S 全部保存 Ctrl+RR(双击R) 重命名 F12 转到定义 Home/End 使光标跳到该行的行首/尾 Ctrl + Home/End 使光标跳到整篇代码的行首/尾 F9 插入断点 Ctrl+KC(依次点击KC) 注释当前选中的内容 Ctrl+KU(依次点击KU) 取消注释
2023-11-23 21:14:20
465
原创 unity面试中卡壳的问题记录
7.两个物体都勾上istrigger时会触发trigger相关的方法吗。3.yield return后为什么可以加各种类型的语句。码一下曾经面试中答不出/卡壳的问题,自省。2.生命周期中awake和start的区别。4.image和rawimage的区别。8.二叉树如何进行广度搜索。6.结构体可以做接口吗。9.快排,说的不够清晰。
2023-11-22 04:39:35
394
原创 Unity学习笔记之常用的类前标签——[System.Serializable]
在unity里,自定义数据类型无法显示在inspectior面板里,需要对定义数据类型的类或者结构体使用[System.Serializable]添加在类,枚举,结构前面,可以让该这些对象在inspector中显示。
2023-11-14 02:54:40
367
1
原创 Unity学习笔记之常用的类前标签——[RequireComponent(typeof(xxx))]
避免遗漏依赖的组件。一个脚本可能需要刚体总是被添加在相同的gameobject上。用[RequireComponent(typeof(Rigidbody))]的话,这个过程将被自动完成,省去重复操作,也避免遗漏报错。,脚本所在游戏物体,就会。
2023-11-13 15:51:20
327
原创 Unity学习笔记之UGUI组件——Layout Element(布局元素)
LayoutElement组件通过设置一些属性来控制UI元素的布局,包括最小和最大宽度、最小和最大高度、宽度和高度的优先级等。当UI元素所在的布局组件(如HorizontalLayoutGroup或VerticalLayoutGroup)进行布局计算时,会根据LayoutElement的属性来确定UI元素的最终大小和位置。
2023-11-13 15:23:51
711
空空如也
f1国际版本的unity打开项目时闪退
2023-07-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人