- 博客(38)
- 收藏
- 关注
原创 Unity中,为什么要避免使用SetActive
SetActive方法会导致C#层到Native层的穿梭调用,这比C#层内的速度慢。频繁地调用SetActive可能会导致性能问题,尤其是在大量对象需要被激活或禁用时。SetActive会导致Canvas抛弃其VBO(顶点缓冲对象)数据,重新启用Canvas会使Canvas(包括所有的子Canvas)强制进行rebuild和rebatch进程。如果这种情况发生的非常频繁,增加的CPU使用会造成应用程序的帧率卡顿。:UI元素的网格顶点数改变会造成堆内存分配,触发GC,导致耗时。
2024-12-03 13:39:48
732
原创 ref、out
都是用于方法参数的关键字,它们都允许方法修改传递给它的参数的值。关键字,用于只读引用传递,参数的值不会被方法修改。在C# 7.2及更高版本中,还引入了。
2024-12-03 10:24:39
517
原创 Unity跨平台基本原理
微软为了实现跨语言,制定了一些规范只要一门语言支持CTS(公共类型系统)的规则那么我们就能够使用它在.Net平台下开发应用程序 CLS(公共语言规范)是CTS的一个子级,是一组语言互操作的标准规范我们经常可以看到的CLI公共语言基础结构,它包含CTS公共类型系统 它是微软将CTS等内容提交给国际组织计算机制造联合会ECMA的一个工业标准Net的跨语言是让各种语言支持.Net的规范CLI(也就是CTS等规范)
2024-12-01 22:12:40
1488
原创 Time.timeScale对性能消耗的影响
在Unity中,控制的是游戏逻辑中时间流逝的快慢,而不是实际的帧率。当Time.timeScale的值改变时,它影响的是Time.deltaTime和Time.fixedDeltaTime这两个值,它们分别表示自上一帧以来经过的时间(对于Update和LateUpdate)和固定时间步长(对于FixedUpdate)。
2024-12-01 14:14:51
1136
原创 Lua--1.基础知识
lua中所有的变量申明 都不需要申明变量类型 他会自动的判断类型(字符串 可以进行 算数运算符操作 会自动转成number。没有复合运算符 += -= /= *= %=–函数名相同 参数类型不同 或者参数个数不同。:得到变量类型,返回值是一个string。lua中的一个变量 可以随便赋值 ——lua中使用没有声明过的变量 ,–默认调用最后一个声明的函数。–lua中 函数不支持重载。闭包:改变变量的生命周期。没有自增自减 ++ –
2024-11-26 23:34:15
959
原创 Mesh网格
定义:Mesh 是一个包含等数据的对象。它定义了3D模型的几何形状。功能:顶点(Vertices):构成3D模型的点。三角形(Triangles):由三个顶点组成的面,定义了模型的表面。法线(Normals):定义了表面的朝向,对于光照计算非常重要。UV坐标(UV Coordinates):用于将纹理映射到3D模型上。颜色(Colors):可以为每个顶点或每个子网格指定颜色。骨骼权重(Bone Weights):用于骨骼动画,定义了顶点如何受到骨骼的影响。
2024-11-10 18:38:25
509
原创 游戏开发--C#面试题
闭包是指有权访问另一个函数作用域中的变量的函数所以闭包一般都是指的一个函数创建这种特殊闭包函数的方式往往是在一个函数中创建另一个函数答案:通过在类中实现索引器实现答案:通过为该类实现迭代器可以让其使用foreach遍历传统方式:继承IEnumerator、IEnumerable两个接口实现其中的1.GetEnumerator方法2.Current属性3.MoveNext方法语法糖方式:利用yield return语法糖,实现GetEnumerator方法即可完成迭代器的实现。
2024-11-09 21:04:32
1218
原创 C#学习记录--更新中
让泛型的类型有一定的限制关键字:where泛型约束一共有6种1.值类型 where 泛型字母:struct2.引用类型 where 泛型字母:class3.存在无参公共构造函数 where 泛型字母:new ()4.某个类本身或者其派生类 where 泛型字母:类名5.某个接口的派生类型 where 泛型字母:接口名6.另一个泛型类型本身或者派生类型 where 泛型字母:另一个泛型字母where 泛型字母:(约束的类型)
2024-11-06 23:15:37
964
原创 UGUI--学习记录
Canvas意思是画布,主要负责所有UI元素能够被显示的根本,负责渲染自己的所有UI子对象,可以修改Canvas的参数调整渲染方式。所有的UI事件都通过EventSystem组件中轮询检测并做相应的执行,类似一个中转站,和许多模块一起共同协作。基于Unity游戏对象的UI系统,只能用来做游戏UI功能,不能开发Unity编辑器中内置的用户界面。:屏幕匹配模式,当前屏幕分辨率宽高比不适应参考分辨率时,用于分辨率大小自适应的匹配模式。:分辨率自适应会改变的参数,通过屏幕分辨率和参考分辨率计算而来。
2024-10-29 21:34:17
945
原创 Unity学习记录-API
false 不会保留 会直接把世界坐标系下的 位置角度缩放 直接赋值到 本地坐标系下。true 会保留 世界坐标下的状态 和 父对象 进行计算 得到本地坐标系的信息。同样缩放不能只改xyz 只能一起改(相对于世界坐标系的缩放大小只能得 不能改)之前的 旋转 位移 都提供了 对应的 API 但是 缩放并没有。如果你想要 让 缩放 发生变化 只能自己去写(自己算)让一个对象的面朝向,可以一直看向某一个点或者某一个对象。参数二:是否保留世界坐标的 位置 角度 缩放 信息。Unity没有提供关于缩放的API。
2024-10-18 23:41:35
433
原创 Unity学习日志-API
如果我们希望改变的 角度 是面板上显示的内容 那一点是改变 相对父对象的角度。通过head.localEulerAngles得到的角度 不会出现负数的情况。第二个参数 默认不填 就是相对于自己坐标系 进行的旋转。参数三:默认不填 就是相对于自己的坐标系 进行旋转。第一个参数 相当于 是旋转的角度 每一帧。参数二:相对于那一个点的 哪一个轴转圈圈。参数三:转的度数 旋转速度 * 时间。界面上的xyz(相对于世界坐标)参数二:是转动的 角度 是多少。参数一:是相对哪个轴进行转动。
2024-10-17 02:28:25
427
原创 4. 单例模式线程安全问题--是否加锁
项目需要用到多线程才需要加锁,根据需求而定继承MonoBehaviour的单例模式不加锁不继承MonoBehaviour的单例模式根据项目是否用到多线程判断加不加锁。
2024-10-12 14:17:34
606
原创 3. 单例模式唯一性问题—构造函数
/ 破坏单例模式的唯一性,可以自己new对应的单例模式类对象,这样不安全对于继承MonoBehaviour的单例模式基类由于继承MonoBehaviour的脚本不能通过new创建,因此不用过多考虑。
2024-10-12 11:06:53
385
原创 2. 继承Mono的单例模式基类
2.切换场景回来时,由于场景放置了挂载脚本的对象,回到该场景时 又会有一个该单例模式对象。3.还可以通过代码动态的添加多个该脚本 也会破坏唯一性。需要人为干涉,定规则,或者通过代码逻辑强制处理。因为很容易被破坏单例模式的唯一性。
2024-10-12 01:17:55
507
原创 动态规划--0-1背包问题
我们要求得 i 个物体放入容量为m(kg)的背包的最大价值(记为c[i,m])。在选择物品的时候,对于每种物品只有两种选择,即装入背包或不装入背包。某种物品不能装入多次(可以认为每种物品只有一个),因此该问题被称为0-1背包问题。假设现有容量m kg的背包,另外有 i 个物品,重量分别为w[1] w[2]…w[i] (kg),价值分别为p[1]、p[2]…p[i] (元),将哪些物品放入背包可以使得背包的总价值最大?(示例一:m=10 i=3重量和价值分别为3kg-4元,4kg-5元 ,5kg-6元)
2024-05-17 23:37:37
616
原创 动态规划--钢条切割问题
动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。动态规划和分治法相似,都是通过组合子问题的解来求解原问题。分治法讲问题划分成互不相交的子问题,递归求解子问题,再将他们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。在这种情况下,分治算法会做出许多不必要的工作,它会反复的求解那些公共子问题。而动态规划算法对每个子子问题只求解一次,将结果保存到表格中,从而无需每次求解一个子子问题都要重新计算。
2024-05-14 16:31:50
1544
1
原创 算法--分治算法
分治策略:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小),则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设汁策略叫做分治法。可使用分治法求解的一些经典问题(1)二分搜索(2)大整数乘法(3)Strassen矩阵乘法(4)棋盘覆盖(5)合并排序(6)快速非序(7)线性时间选择(8)最接近点对问题(9)循环赛日程表(10)汉诺塔。
2024-05-14 01:59:35
649
1
原创 UGUI源码--从例子开始-1
创建Cube游戏对象,Cube的6个面网格存储在Mesh Filter里面,通过Mesh Renderer渲染出来。
2024-05-02 21:56:54
156
1
原创 NullReferenceException: Object reference not set to an instance of an object
NullReferenceException: Object reference not set to an instance of an object
2024-04-29 14:57:08
613
原创 Broken text PPtr in file(XX/Animation_check_Riko.c),Local file identifier (110200220) doesn‘t exist!
Broken text PPtr in file(Assets/Suriyun/Animations/Animation_check_Riko.controller). Local file identifier (110200220) doesn’t exist!
2024-04-28 20:33:10
460
1
原创 Unexpected timestamp values detected. This can occur in H.264 videos not encoded with the baseline p
检测到意外的时间戳值。这可能发生在未使用基线配置文件进行编码的H.264视频中。时间戳将倾斜以更正.mp4的播放。
2024-04-28 17:55:38
1695
原创 UGUI的Canvas
Canvas:画布组件,用于渲染显示UI控件,UI控件必须作为子对象场景中可以有多个Canvasy对象一不同的渲染和分辨率适应方式(不常用)Canvas组件的3种渲染方式覆盖模式:UI始终显示在最前面摄像机模式:3D物体可以显示在UI之前,需要创建一个新摄像机专门显示UI,可以用于角色人物面板3D显示世界空间模式:用于制作3DUI,在VR和AR中常用,游戏中实现的3D UI效果才使用。
2024-04-24 11:05:57
814
原创 c#中的字典
在Entry结构体中,添加了next,如果在同数组下标,添加了多个数据,那会在next记录原来这个位置的值,记录原理的下标,在通过键找到对应的下标后,判断此下标的对应的结构体里的Key是不是与自己的键值相等,相等则取结构体Entry内的value值,否则,通过该结构体的next值查询原来该位置的值,重复判断到找到相同的Key。Hsh算法是一种数字摘要算法,将不定长度的二进制数据集给映射到一个较短的二进制长度数据集。实现Hash算法的函数称为Hash函数。若键不存在,会抛出异常。
2024-04-23 23:49:37
460
原创 C#中的委托
通过泛型解决了排序对象的类型问题,可以排序各种类型的数组,比如Student类等等,再通过Func委托传递比较大小方法,解决了按照什么数据成员排序的问题,比如可以按照年龄排序,身高排序,工资排序,只需要传入对应的比较两个数大小方法。但是当我们需要排序一个Employee雇员类的数组时,比如想按照雇员工资排序,雇员年龄排序等等,我们应该怎么排序,或者现在想要排序Student类的数组呢,逻辑一样但是要重构排序方法,怎么解决。在类里声明了比较两个雇员工资的方法。
2024-04-23 14:27:47
1237
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人