- 博客(54)
- 收藏
- 关注
原创 002.反射
调用方法或创建对象,而不需要在编译时就知道这些类型的具体信息。简单说,反射就像程序的 “自我检查能力”,能让代码 “看见” 并操作自身的结构。Unity 编辑器扩展大量依赖反射,例如自定义 Inspector 面板时,动态获取脚本的字段并生成编辑界面。)或存档系统内部使用反射,动态读取对象的字段并转换为字符串(或反之)。动态地获取类型信息、访问对象成员(如字段、方法、属性等),甚至。物理引擎每帧计算刚体的运动、碰撞检测、关节约束等;五、Unity中每帧执行的逻辑有哪些。二、Unity中反射的常见用途。
2025-09-17 08:41:54
527
原创 001.多线程改多进程会有类似线程安全的问题吗
多进程虽减少了内存共享问题,但在涉及共享资源或显式共享数据时,仍需类似线程安全的同步机制,只是实现方式不同。三、多线程改多进程会有类似线程安全的问题吗。,是操作系统进行资源分配的基本单位。,它们让程序能 "一心多用"。
2025-09-17 08:16:40
318
原创 04.事件中心模块
观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系:当一个对象(被观察者)的状态发生变化时,所有依赖它的对象(观察者)会自动收到通知并更新。这种模式的核心思想是解耦被观察者和观察者,让它们可以独立变化,同时保持联动。三、简单的事件中心模块代码。
2025-09-07 16:40:41
235
原创 03.缓存池
频繁创建 / 销毁对象(尤其是复杂对象,如包含大量组件的游戏物体、需要初始化资源的网络连接)会触发频繁的内存分配与回收(如 Unity 中的 GC 垃圾回收),导致性能波动(如游戏卡顿)。,核心是提前创建一批常用、创建 / 销毁成本高的对象(如游戏中的子弹、敌人,或程序中的网络连接、线程),将其存入一个 “池” 中;缓存池集中管理对象的 “创建、复用、回收”,可统一控制对象的初始化状态(如重置子弹位置、清空数据),避免对象状态混乱;实例化对象时,会在内存中分配空间,删除对象时,三、实现一个基础的缓存池。
2025-09-06 15:20:32
429
原创 02.继承MonoBehaviour的单例模式基类
继承了MonoBehaviour的单例模式对象,需要我们自己保证它的唯一性,不要重复挂载一个脚本,否则它的唯一性就会被破坏。三、自动创建对象并挂载脚本的方法,不用手动挂载脚本,防止重复挂载。
2025-09-06 13:16:57
389
原创 01.单例模式基类模块
确保类只能通过内部的单例实例访问,从而保证整个程序生命周期中仅存在一个类实例,符合单例模式 “唯一实例” 的核心特性。但是游戏中一般会有很多这样的单例模式,一个一个去写重复性的东西太多了。1、私有的静态成员变量。私有构造函数的作用是。
2025-09-06 11:25:52
202
原创 面向对象七大原则
迪米特法则:一个类要尽量减少对别的类的了解,尽量少用别的类和自己关联。开闭原则:对拓展开放,对修改封闭。新加功能尽量是加处理而不是改代码。单一职责原则:一个类只处理自己应该处理的内容,不应该啥都写在一起。合成复用原则:除非设计上需要继承,否则尽量用组合复用的形式。里氏替换原则:任何地方子类都能替代父类,父类容器装子类。依赖倒转原则:不要依赖具体的实现,要依赖抽象(接口)接口隔离原则:一个接口一个行为,不要一个接口n个行为。
2025-07-01 14:43:51
123
原创 内置渲染管线和通用渲染管线的区别
允许开发者根据项目需求,通过脚本和相关API对渲染流程的各个阶段进行自定义,如插入自定义的渲染步骤、添加自定义的后处理效果等。通用渲染管线:虽然不像高清渲染管线(HDRP)那样专注于极致画质,但也能提供比内置渲染管线更丰富的光影效果和更高的画面质量,内置渲染管线:能实现基础的光影效果和后处理效果,但在高端光影效果,如光线追踪、复杂的全局光照等方面支持有限,但自定义选项相对有限,渲染次序基本是固定的,通用渲染管线:注重性能优化,在各种平台上,尤其是移动端和低端机器上,能提供更高效的渲染性能。
2025-02-05 14:35:29
376
原创 判断输入的字符串是否是回文串
回文串是指从左到右读和从右到左读都一样的字符串,即字符串正序和逆序完全相同。例如,“racecar”“level”“12321”“上海自来水来自海上” 等都是回文串,忽略空格、标点符号和大小写后,它们的正向和反向字符排列完全一致。判断输入的字符串是否是回文串。
2025-02-05 12:01:59
233
原创 AssetBundle
这个对象完整保留了当初添加到压缩包内的所有内容,在游戏运行过程中,开发人员能够通过这个对象将所需内容加载出来并加以使用,实现灵活的资源管理与调用。serialized file(序列化文件):将资源拆解后整合在一个对象中,最终统一写入一个单独的文件,整个AssetBundle。resource files(源文件):像图片、声音这类二进制资源,会被单独保存,这样的设计便于快速加载,提高资源调用效率。,它能够容纳模型、贴图、预制体、声音,甚至整个场景,,提升游戏资源的加载效率。
2025-02-04 14:29:29
277
原创 隐式类型转换和显示类型转换
赋值的时候,两边类型是需要⼀致的,如果不⼀致的话,就需要转换类型。进⾏转换,叫做隐式转换。有些情况下,需要我们告诉编译器进行类型转换,叫做显示转换,也。叫做强制类型转换,强塞。
2025-01-18 10:41:35
192
原创 Reset()函数
把脚本挂载给游戏对象或者点击reset时,会进行打印。如果不在编辑状态下,则不会调用reset函数。定义并初始化 a,在引擎中更改a的值,再点击reset,会使a的值变为30。
2024-11-04 18:50:20
427
1
原创 单例模式的概念和用处
定义:单例模式可以确保一个类只有一个实例,并且提供一个访问它的全局访问点。这种模式通常用于那些需要频繁创建和销毁的对象,或者是作为系统配置、数据库连接等资源管理器的情况,以减少资源消耗并确保程序的一致性。请设计一个类,这个类不管在任何地方执行任何代码,不管执行多少次代码,要求这个类的对象在内存中只有。在普通模式下,方法循环五次,每次HashCode不同,代表不是同一个对象;在单例模式下,方法循环五次,每次HashCode相同,代表是同一个对象;
2024-11-04 15:36:01
475
原创 键值对和哈希冲突以及解决办法
这个整数对应着哈希桶的索引,由于输入是无线的,而输出的整数是有限的,会导致经过哈希运算得到相同的整数,索引相同,指向了同一个位置,这就是哈希冲突。用红黑树替换链表,因为链表查找慢,冲突过多时,不合适。存储数据时,key经过哈希运算得到一个。
2024-11-02 20:42:51
273
原创 装箱和拆箱
这是一个装箱的过程,把基本数据类型的数据转化为“类”类型的数据,反过来就是拆箱的过程。拆箱装箱涉及数据拷贝,应尽量减少拆箱装箱的次数,减少内存消耗。
2024-11-02 20:35:06
151
原创 对象池的作用以及简单示例
把对象放在一个集合里,通过集合来管理对象,不用对象的时候不要删除对象,而是放到集合里;需要对象时,先在集合里找是否有该对象,有直接使用,没有创建后使用。在游戏当中,有很多时候需要重复地创建或删除某些游戏对象,此时会耗费系统资源,从而影响性能,利用。通过按鼠标左右键来在场景中进行游戏对象的删除和创建,但实际上,并不是真正的删除,对象池能够节省内存,优化程序流畅程度。1、将一个游戏对象制作成预制体。2、创建一个空游戏对象并挂载脚本。按鼠标右键,会删除一个游戏对象。按鼠标左键,会创建一个游戏对象;
2024-11-02 15:49:04
662
原创 异常处理基础
在执行try语句中的代码时发生异常,程序流程将会立即跳转到catch语句,执行catch语句中的代码,而不是显示晦涩难懂的消息。可以得出结论:finally代码块总是会执行。finally语句块中的代码总是会执行。将异常作为参数传递进来。
2024-09-20 16:59:34
312
原创 static限定符
line 类中的 orign 成员被声明为 static ,这意味着它是类级别的成员,不是实例级别的成员。因此,所有的line类实例共享同一个orign成员。当删除static 关键字时会报错,这是因为试图在一个实例方法(Main方法)中访问一个非静态(实例成员)时,而这个成员却在类级别上被引用了。
2024-09-11 15:49:23
475
原创 显示数据类型转换和隐式数据类型转换的区别
2.隐式类型转换是由编译器自动完成的类型转换,不需要程序员显式地指定。隐式数据类型转换通常用于。1.显式类型转换时是指程序员明确指定将一个数据类型转换为另一种数据类型,,可能导致精度损失或者数据溢出。,这样可以避免数据丢失。
2024-08-31 19:10:00
313
原创 Decimal
这是因为 C# 中有多种数值类型,如果不加后缀,默认的数值字面值会被解释为。后缀用于标识一个数值字面值为。的范围,编译器会将其解释为。
2024-08-31 18:34:15
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅