- 博客(39)
- 收藏
- 关注
原创 策略模式
在策略模式定义了一系列算法或策略,并将每个算法封装在独立的类中,使得它们可以互相替换。通过使用策略模式,可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。
2024-03-10 18:39:26 530
原创 装饰器模式
装饰器模式是一种结构型设计模式,它允许向一个对象动态地添加新功能,同时不改变其接口。这种模式是通过创建一个包装器,即装饰器,来包裹原始对象,从而为其添加新的行为或责任。
2024-03-10 15:03:36 464
原创 原型模式介绍
原型模式通过复制现有对象来创建新对象,而不是通过实例化新对象并设置其属性值。原型模式允许我们在运行时动态地创建对象,并且避免了创建复杂对象时的构造逻辑。在原型模式中,通常有一个原型对象作为模板,当需要创建新对象时,可以通过复制原型对象来得到一个新的对象副本。这样做可以提高性能,尤其是在创建对象的过程中涉及到复杂的初始化操作或资源消耗较大的情况下。
2024-03-09 17:06:28 412
原创 工厂模式介绍
在工厂模式中,定义一个工厂类,工厂类负责根据客户端的需求创建相应的对象,而客户端无需直接调用对象的构造函数来创建对象,而是通过工厂类来实现。
2024-03-09 15:50:29 433
原创 代理器模式
代理模式是一种结构性设计模式,其中一个对象(代理)充当另一个对象(真实对象)的接口。代理控制着对真实对象的访问,允许你在访问真实对象之前或之后执行特定操作。这可以用于实现延迟加载、访问控制、日志记录等功能,而无需直接修改真实对象的代码。
2024-03-09 09:56:33 318
原创 随意给一个int变量,判断是不是2的幂
要判断一个整数是否是2的n次方,可以使用位运算的方法。如果一个整数是2的n次方,则它的二进制表示中只有一个位是1,其余位都是0。
2024-03-03 19:12:38 385
原创 常用的位操作符
按位与(&): 将两个操作数的对应位都设为1时结果为1,否则为0。例如,1010 & 1100 = 1000。按位或(|): 将两个操作数的对应位中只要有一个为1时结果为1,否则为0。例如,1010 | 1100 = 1110。按位异或(^): 将两个操作数的对应位不相同时结果为1,相同时结果为0。例如,1010 ^ 1100 = 0110。按位取反(~): 将操作数的每个位取反,即0变为1,1变为0。例如,~1010 = 0101。左移(<<): 将一个数的二进制位向
2024-03-03 19:05:22 360
原创 如何降低DrawCall
静态合并(Static Batching):Unity可以将静态(不移动、不旋转、不缩放)且共享相同材质的游戏对象合并为一个大的Mesh,从而减少Draw Calls。如何进行静态合批:PlayerSettings中开启static batching,对需要静态合批物体的Static打钩动态合并(Dynamic Batching):对于较小的、共享相同材质的动态游戏对象,Unity也能在运行时动态地将它们合并在一起,减少Draw Calls。动态合批是全自动的,我们不需要做任何事情。
2024-03-03 18:18:08 800
原创 Unity如何优化内存
减少纹理大小和分辨率:大的纹理消耗大量内存。考虑降低纹理的分辨率或使用压缩格式。使用Mesh优化:简化3D模型的多边形数量,移除不必要的顶点。音频剪辑优化:压缩音频文件,使用适合场景的最低合理质量。Asset Bundles:动态加载和卸载资源,按需加载资源,避免一次性加载全部资源。
2024-03-03 17:32:24 973
原创 MeshRender中的material和Sharedmaterial的区别
Material 属性指向的是一个实例化的材质对象。当你通过 renderer.material 获取或设置材质时,会创建该材质的一个副本,并将其应用于当前的 MeshRenderer。这意味着对于同一个 MeshRenderer,如果多次获取其 material,将会得到多个不同的材质实例。修改 material 属性获取的材质的属性(如颜色、贴图等)只会影响当前的 MeshRenderer,不会影响其他使用相同材质的 MeshRenderer。
2024-03-03 17:09:05 488
原创 什么是MVC框架
MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序分解为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。每个组件都有其独特的责任和作用,以实现代码的分离和更好的可维护性。
2024-03-03 16:50:17 526
原创 接口(Interface)与抽象类之间的不同
接口:接口定义了一组抽象方法的集合,但不包含具体的实现。接口中的所有方法默认都是公共的,并且不包含字段或常量。抽象类:抽象类是一种特殊的类,可以包含抽象方法和具体方法。抽象方法是没有实现体的方法,而具体方法是有实现体的方法。抽象类可以包含字段、构造方法和非抽象方法。
2024-03-03 13:58:58 418
原创 重载和重写的区别
重载指的是在同一个类中,使用相同的方法名但参数列表不同的多个方法,目的是让方法可以接受不同类型或数量的参数。而重写则是指子类覆盖了父类中具有相同方法签名的方法,以改变或扩展其行为。重载是编译时多态,重写时运行时多态。
2024-03-03 12:43:08 318
原创 Unity编辑器代码执行顺序
Unity编辑器中的脚本执行顺序是Awake——>OnEnable——>Start——>FixedUpdate——>yield WaitForFixedUpdata——>OnTrigger——>OnCollision——>OnMouse**(输入事件)——>Update——>yield WaitForSecone——>StartCoroutine——>LateUpdate(游戏逻辑)——>屏幕渲染——>OnGui(GUI渲染)——>OnDisable——>OnDstory。
2024-02-24 16:01:55 565
原创 Enum枚举的使用
枚举是值类型的,并非引用类型如何通过枚举变量值获取对应变量名如何通过枚举变量获取对应变量名如何通过枚举变量值获取对应变量名如何通过字符串名称获取对应变量名如何通过字符串名称获取对应枚举变量值如何通过枚举变量名获取对应的变量值枚举变量值如果定义枚举得时候没有给枚举赋值,则默认从第一个开始变量赋值为0,然后递增1,2,3…手动给其中一个变量赋值,则下面得从赋的值开始递增,如下:通用枚举工具项目中经常用到这些东西,为了方便写成通用的
2024-02-24 14:25:36 430
原创 Unity如何将当前的帧率显示在UI界面
获取时间间隔:首先,我们需要计算每一帧之间的时间间隔。在Unity中,可以使用Time.deltaTime来获取上一帧到当前帧的时间间隔。计算帧率:通过时间间隔,我们可以计算出帧率。帧率是指每秒钟渲染的帧数,可以通过将1除以时间间隔来得到。显示帧率:最后,我们将计算得到的帧率显示在屏幕上。在Unity中,可以使用GUI系统来实现,在屏幕上绘制文本来显示帧率。
2024-02-19 13:23:04 1566 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人