自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 杂乱的ref、out、tuple代码理解

【代码】杂乱的ref、out、tuple代码理解。

2025-04-08 18:15:38 92

原创 变量、数据、值类型&引用类型的存储方式

数据是实际存储的内容:对于值类型,数据直接存储在变量对应的栈内存位置。对于引用类型,数据存储在堆内存中,变量存储的是指向这个数据的地址。这就解释了为什么:值类型赋值会复制数据:因为是直接复制栈上的内容。引用类型赋值只复制地址:因为只是复制了指向堆内存的地址。修改引用类型时多个变量会看到同样的变化:因为它们指向同一个堆内存位置。

2025-04-08 16:46:37 307

原创 空值处理操作符

当值类型使用?可空操作符时,它依然是值类型,只是被包装成了结构体,并不会变成引用类型。内存分配值类型:直接在栈上分配可空值类型:在栈上分配,但有额外的标志位引用类型:在堆上分配,栈上存储引用性能特征值类型:最高性能略有性能开销引用类型:需要垃圾回收。

2025-04-07 17:13:50 189

原创 C#partial关键字

set;set;// 发送邮件逻辑set;set;// 更新地址逻辑set;set;

2025-04-07 14:19:41 302

原创 Unity中锚点学习

Unity中锚点学习

2025-03-25 17:59:25 205

原创 Unity中的位置属性

【代码】Unity中的位置属性。

2025-03-25 16:12:56 80

原创 DOTween序列

/ 路径点改变时回调。.InsertCallback(2f, () => {}) // 在指定时间点插入回调。.OnStep(() => {}) // 每步更新时回调。.OnStepComplete(() => {}) // 每步完成时回调。.OnStart(() => {}) // 开始时回调。.OnComplete(() => {}) // 完成时回调。.OnKill(() => {}) // 销毁时回调。

2025-03-25 14:41:20 313

原创 QFramework笔记

其中,"Register"方法是将一个回调函数注册到BindableProperty对象上,当BindableProperty的值发生改变时,这个回调函数会被触发,并且会接收到新的值作为参数。BindableProperty是QFramework的核心组件之一,它实现了数据绑定的功能,可以将UI控件的属性和ViewModel的属性进行绑定。在这种模式下,可以通过将UI控件的属性与ViewModel中的属性进行绑定,当属性值发生变化时,即可实现数据的双向传递。前者接收的是新的值,后者接收的是初始的旧值。

2025-03-03 16:06:38 247

原创 C#协同程序

C#协同程序

2025-02-28 11:27:18 83

原创 C#闭包分析

C#闭包原理:编译器在背后生成了一个私有的密封类,它将外部变量包装成私有密封类的成员变量,而委托方法包装成私有密封类的方法。涉及到外部变量的地方都替换成了私有密封类的成员变量,所以,每次循环修改的始终是私有密封类的成员变量的值,那么调用委托时输出的自然都是相同的值了。捕获迭代变量:当捕获的外部变量为for循环(注意是for而不是foreach)的迭代变量时,C#认为变量i是定义在循环体外的。捕获变量:捕获的变量会在真正调用委托时“赋值”,而不是在捕获时“赋值”,即总是使用捕获变量的最新的值。

2025-02-28 11:22:53 134

原创 材质纹理贴图学习笔记

材质、贴图

2025-02-18 09:13:16 101

原创 摸爬滚打的开发总结

Unity游戏开发随笔

2025-02-15 09:31:17 130

原创 Unity粒子特效打包后不显示

Unity粒子特效打包后不显示

2025-02-14 19:03:20 364

原创 简单的UI事件系统工具类

【代码】简单的UI事件系统工具类。

2024-02-06 13:11:17 424 1

原创 事件、委托与回调

事件是一种用于在对象之间进行通信的方法,它允许一个对象通知其他对象某个事件发生。事件通常包含一个方法,当事件发生时,该方法会被调用。事件可以有一个或多个订阅者,订阅者可以在事件发生时执行相应的操作。:委托是一种表示方法指针的类型,它可以将方法作为参数传递给其他方法。委托可以看作是一种特殊的函数指针,它可以用来封装方法,以便在需要时调用。:回调是一种在特定事件发生时由另一个对象调用的方法。回调函数通常作为参数传递给事件处理程序,当事件发生时,回调函数会被自动调用。方法作为事件的处理方法。

2024-01-12 11:45:35 742 1

原创 依赖倒置原则(DIP)小案例

高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

2024-01-07 11:37:36 395 1

原创 排序之快速排序

【代码】排序之快速排序。

2023-12-30 11:46:06 418 1

原创 关键字ref、out、in的区别

初始化要求1)ref:必须初始化2)out:不需要初始化3)in:必须初始化方法内部行为1)ref:可读可写2)out:必须写(赋值)3)in:只读使用场景1)ref:需要在方法内修改参数值时2)out:需要返回多个值时3)in:传递大型结构体提升性能时。

2023-12-22 20:27:58 890

原创 C#反射的理解

C#反射(Reflection)是.NET Framework中提供的一种机制,它允许程序在运行时获取关于程序及其元素(如类、接口、枚举、属性、方法、参数等)的类型信息,并能动态创建实例,调用方法和访问字段。C#反射是一种在运行时检查和操作程序集、类型、成员等的技术。通过反射,可以在运行时获取类的信息,如属性、方法、事件等,并动态地调用它们。:通过反射,我们可以获取到类型的信息,包括类名、方法名、属性名、参数类型等。示例1是一个简单的C#反射示例,该示例展示了如何使用反射获取类的信息和方法。

2023-12-20 21:47:28 362

原创 解析CSV配置表

【代码】解析CSV配置表。

2023-12-19 13:30:03 437 1

原创 使用ScriptableAsset加载数据

注意:ScriptableAsset不能在编辑器以外进行修改,可以在游戏运行前在Unity中部署数据,运行后的游戏不能使用ScriptableAsset来保存修改后的数据!我们经常用Json、CSV等文件为数据做初始化,我们也可以使用Unity中自带的ScriptableAsset类实现这一流程。在Unity中就可以右键Create这个资产数据啦!

2023-12-11 19:29:26 405 1

原创 游戏时间轴

时间数据类、单例类、时间操作类型枚举、时间处理键枚举(时间对象管理的数据结构选用字典)委托(Action带不带参数取决于具体操作)时间轴用于实现游戏中时间延迟、循环的操作。延迟时间的次数(int)延迟时间(float)时间操作类型(枚举)开始时间(long)3、时间操作类型枚举、时间处理键枚举。创建空物体,挂载到空物体上。

2023-12-04 10:51:48 656

原创 人物行走在柏林噪声地图

本文包括绘制柏林噪声地图、小地图、人物移动的三种实现

2023-10-31 19:47:55 165 1

原创 TimeLine自定义轨道

自定义轨道

2023-10-27 20:54:37 114 1

原创 带描边雷达图的另一种思路

Pink游戏对象脚本中的关联脚本为Green脚本,通过调用Green脚本中封装好的方法(本案例中为ChangeValue方法)给Green脚本中的集合传值,因为当Pink的Scale缩放改变时,Green的Scale缩放也要进行相同的改变方能实现描边效果。每个游戏对象身上的RectTransform组件中的Scale缩放不同,实现层级效果。颜色单词对应上面雷达图底图颜色和相应游戏对象身上的脚本名称。Green中的Board字段为描边用线的线宽。脚本中的Num字段为多边形的边数。

2023-10-26 16:19:41 112

原创 雷达图描边

雷达图描边。

2023-10-25 15:27:28 112 1

原创 手写DoTween

手写DoTween代码

2023-10-25 09:45:38 87 1

原创 SkinnedMeshRenderer 和 MeshRenderer 区别

MeshRenderer 用于渲染静态的、不带有骨骼动画的模型,而 SkinnedMeshRenderer 用于渲染带有骨骼动画的模型并支持模型的网格变形。SkinnedMeshRenderer:SkinnedMeshRenderer 适用于带有骨骼动画的模型,通常用于角色模型和其他需要变形的模型。SkinnedMeshRenderer:SkinnedMeshRenderer 可以通过关联的骨骼进行网格的变形,使模型实现各种形状的变化,例如角色的动画。

2023-10-25 09:36:53 997 1

原创 2D轮转图实现蒙皮、骨骼换装

首先是2D轮转图与蒙皮脚本的关联,下面代码中的changeAvator.Change()方法。首先你要会2D轮转图。

2023-10-24 20:28:31 286

原创 GetComponentsInChildren与GetComponentInChildren区别

获取对应组件,按层级返回最先包含的对应组件(获取对应组件,返回对应组件的数组(范围:从自己开始直到子子孙孙。范围:从自己开始直到子子孙孙。激活、失活无关,失活的。激活、失活无关,失活的。

2023-10-24 15:00:50 949

原创 轮转图3D

创建一个空物体,挂载轮转图3D脚本。

2023-10-22 20:38:48 97 1

原创 2D轮转图

在空物体上挂载下面脚本 ,其中的对齐方法OnAlign可以看做一个对外开放的接口。

2023-10-19 20:15:53 64

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除