自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 享元模式(Flyweight Pattern)

享元模式是一种结构型设计模式,通过共享技术有效支持大量细粒度对象的复用。它将对象状态分为内部状态(共享、不变)和外部状态(不共享、可变),通过享元工厂管理共享对象。以围棋游戏为例,只需创建黑白两个棋子对象,通过传入不同位置实现复用。代码示例展示了棋子共享的实现,验证了仅创建2个对象即可支持多次落子。该模式适用于文本编辑器、游戏粒子系统等场景,能显著减少内存占用,但会增加系统复杂度。核心思想是将不变部分共享,变化部分外部传入,实现"少量对象表示大量实例"的效果。

2026-05-08 10:22:57 223

原创 Unity 程序集定义文件(Assembly Definition)的 Auto Referenced 选项

本文档解释了Unity中程序集定义文件(.asmdef)的Auto Referenced选项作用。该选项默认为true,表示Unity预定义程序集(如Assembly-CSharp)会自动引用该程序集,使项目中的松散脚本可以直接使用其类型。若设为false,则必须通过其他.asmdef文件显式引用才能访问该程序集中的代码。这个设置主要控制程序集间的隐式引用关系,帮助开发者管理代码依赖。

2026-04-22 11:30:06 48

原创 Python的基本数据类型

Python数据类型可分为七大类:数字类型(int,float,complex,bool)、字符串(str)、序列类型(list,tuple,range)、集合类型(set,frozenset)、映射类型(dict)、二进制类型(bytes,bytearray,memoryview)和特殊类型(NoneType)。Python是动态类型语言,变量类型由解释器自动推断。数据可分为可变(如列表)和不可变(如元组)两类,元组的不可变性体现在不能修改其元素引用,但若元素本身可变(如列表),则可修改其内容。元组的不可

2026-03-13 11:50:56 261

原创 Unity资源内存管理与释放

Unity内存管理关键点总结 Unity开发中常见的内存问题源于资源未正确释放。内存主要分为三部分:C#托管堆(GC管理)、原生内存(引擎资源)和显存。关键API包括: Object.Destroy:销毁实例但不卸载资源; Resources.UnloadAsset:手动卸载指定资源(需确保无引用); Resources.UnloadUnusedAssets:全局清理无引用资源(推荐在场景切换后调用); AssetBundle.Unload:释放AssetBundle及其资源(参数true需谨慎使用)。 优

2026-01-05 15:00:13 1314

原创 Unity UGUI 之 Canvas Scaler

CanvasScaler是Unity中用于UI自适应的重要组件,提供三种缩放模式:固定像素大小、根据屏幕尺寸缩放和固定物理大小。最常用的ScaleWithScreenSize模式通过参考分辨率和屏幕匹配模式(匹配宽高/展开/伸缩)实现UI适配,其中匹配宽高模式可通过0-1的值灵活调整宽高优先级。这些功能确保UI在不同设备上保持良好显示效果。

2025-12-05 15:20:13 482

原创 Lua的环境与热更

Lua的环境与热更

2024-12-01 15:08:32 1340

原创 Unity的GPU Instancing技术

Unity GPU Instancing

2024-11-29 18:19:17 1403

原创 C#热更原理与HybridCLR

C#,HybridCLR热更原理

2024-11-29 10:33:42 1096

原创 C# NetworkStream用法

NetworkStream用法

2024-11-19 19:47:18 1204

原创 C# const与readonly关键字的区别

关键字在C#中提供了一种简单而有效的方式来确保字段在初始化后保持不变,来维护数据完整性。关键字用于定义在对象创建后不能更改的字段。)有些相似,但也有显著不同。

2024-11-06 20:55:23 515

原创 Unity Canvas的三种模式

Screen Space - Overlay(屏幕空间 - 覆盖): 这是最简单的 Canvas 渲染模式。UI 元素在这个模式下将渲染在屏幕上的最顶层,不受场景中其他物体的影响。UI 元素的位置是相对于屏幕的,而不是相对于世界空间的。这意味着即使场景中有相机移动或旋转,UI 元素也会始终保持在屏幕的固定位置。这种模式适用于大多数 2D 游戏和简单的用户界面。Screen Space - Camera(屏幕空间 - 相机): 在这种模式下,UI 元素仍然是渲染在屏幕上的,但是相对于一个指定的摄像机。

2024-03-24 11:15:26 4203

原创 Unity工具开发常用:删除空目录,获取Unity相对路径

【代码】Unity工具开发常用:删除空目录,获取Unity相对路径。

2024-01-26 11:44:02 726

原创 svn合并跟踪信息丢失

svn合并跟踪信息丢失

2023-12-22 13:15:14 893

原创 性能优化之FPS

FPS

2023-11-30 15:21:06 1997

原创 关于Unity中字典在Inspector的显示

字典在Inspector的显示

2023-11-28 10:10:46 2402

原创 Unity编译报错Copying Assembly-CSharp.dll问题解决

突然想到自己电脑上安装了千牛客户端,然后试了下,卸载千牛后,果然没问题了,只能说有点坑呀。但是关闭各种杀毒软件,并且关闭windows安全中心的病毒和威胁防护,一开始去查资料发现可能是杀毒软件一直在后台读取文件的原因引起的。错,直接导致编辑器无法正常运行,必须重启才能正常运行。报错的情况依然存在,有时也可能会出现。于是看到网上网友说有个阿里旺旺软件。自带了一个流氓防护后台进程。

2023-11-25 14:56:25 1013

原创 C语言、C++操作符优先级

C语言,C++运算符优先级

2023-10-22 01:23:58 540

转载 Unity字典序列化,列表序列化

Unity字典序列化

2023-10-12 16:48:59 630

原创 红黑树-自平衡二叉搜索树

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它的节点可以是红色或黑色。这个颜色的设计是为了满足红黑树的五个关键性质,确保树保持平衡和高效地支持插入、删除和搜索操作。每个节点要么是红色,要么是黑色。根节点是黑色的。每个叶子节点(NIL节点,通常表示为黑色)是黑色的。如果一个节点是红色的,那么它的两个子节点都是黑色的。对于每个节点,从该节点到其后代任意叶子节点,经过的黑色节点的数量都相同。

2023-09-27 13:58:13 229

原创 行为型-中介者模式

行为型设计模式-中介者模式

2023-09-19 23:31:17 336

原创 行为型-命令模式

行为型模式-命令模式

2023-09-19 22:56:07 517

原创 行为型模式-策略模式和责任链模式对比

策略模式和责任链模式区别

2023-09-18 14:53:36 1888

原创 创建型-单例模式-实现和优缺点

单例模式的实现和优缺点

2023-09-18 14:38:40 533

原创 C# 静态类和sealed类(密封类)的区别

C# 静态类和sealed类(密封类)的区别

2023-09-18 14:23:24 681

转载 lua之table的使用

lua之table的使用

2022-08-10 11:00:43 2238

原创 Lua的协程

Lua的协程

2022-08-09 11:45:20 359

转载 Unity资源打包之Asset Bundle

原文链接:Asset Bundle的作用:1.AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;2.AssetBundle自身保存着互相的依赖关系;3.压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输;4.把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;什么是AssetBundle可以归为两点:1,它是一个存在于硬盘上的文件。可以称之为压缩包。这个压缩包可以认为是一个文件夹,里面包含了多个文

2021-11-19 15:04:29 1571

原创 NGUI 5 综合

1.UIDrawCall就是根据提供的数据(统一在UIPanel指派)进行渲染绘制。2.UIWidget拥有UIDrawcall mDrawCall和UIGeometry mGeo两个成员变量,其中UIGeometry就是对UIWidget的顶点vertices,uvs和color进行存储和更新。3.每一个UIWidget都有一个UIGeometry,UIGeometry完全由UIWidget维护,UIWidget的UpdateGeometry函数则是调用OnFill进行顶点信息的填充,每个继.

2021-10-20 00:12:32 172

原创 NGUI 4 (重点) UIPanel

UIPanel中的核心流程在LateUpdate方法中:void LateUpdate () //核心方法 更新所有Panel和DrawCall// 按顺序更新每一个Panel,list是一个静态的UIPanel列表,表明所有UIPanel公用只有一个。for (int i = 0, imax = list.Count; i < imax; ++i) list[i].UpdateSelf();//更新所有DrawCall for (int i = 0, imax = ...

2021-10-20 00:07:58 598

转载 关于Lua中的变量赋值

1.lua中表table的赋值实质为引用lua代码举例如下local TabA = {["a"] = 1,["b"] = 2}local TabB = TabA--将TabA赋值给TabBprint(TabA.a)print(TabB.a)TabB.a = 5--此处对表TabB进行操作print(TabA.a)print(TabB.a)print("~~~~~~~~~~~~~~~~~~~~~~~~~")local NumA = 1local NumB = NumANumB =

2021-09-03 09:44:42 1622

转载 Lua中的#

对字符串来说,#取字符串的长度,但对于table需要注意。lua的table可以用数字或字符串等作为key, #号得到的是用整数作为索引的最开始连续部分的大小, 如果t[1] == nil, 即使t[5], t[6], t[7]是存在的,#t仍然为零。对于这类tb[1],tb[2]....才能获取到正确的长度。local tab = {}tab[1] = 1tab[2] = 2tab[3] = nilprint(#tab)--结果为2local tab2 = {}tab2[1]

2021-09-03 09:28:46 3318

转载 Lua中,泛型for循环遍历table时,ipairs和pairs的区别

根据table型变量key是否为连续数字,如果是则称为数组型table,如果不是则称为非数组型table.事实胜于雄辩,接下来通过实验来区分两组迭代器的区别.首先给出pairs和ipairs在数组型table和非数组型table中的遍历效果: local testTable1 = {"a","b","c","d","e"} local testTable2 = {[1] = "a",["x"] = "b",["y"] = "c",[2] = "d",[8] = "e"}..

2021-09-03 09:26:04 697

转载 NGUI(3) UIWidget

本篇文章和大家介绍的是NGUI中的基础组件UIWidget,UIWidget是所有UI组件的基类,持有UI组件的大小、锚点、顶点、颜色,Alpha等所有跟渲染相关的属性。关键属性:protected Pivot mPivot //锚点protected Color mColor; //颜色protected int mWidth;//组件宽度protected int mDepth = 0;//显示深度,这个深度是相对于父节Panel的public UIGeometry geomet

2021-09-01 12:04:51 665

转载 NGUI(2) UIRect

UIRect源码分析UIRect是UIPanel和UIWidget的抽象基类,提供了一些共有的方法和共同的逻辑。其中最主要的逻辑是围绕Anchors更新位置,和提供了一些时序相关的抽象方法。AnchorPointUIRect首先内置了AnchorPoint这么一个内联类,并定义了四个AnchorPoint类型的变量,分别对应上下左右四个方向的锚点。其中有几个重要的字段:public Transform target; // 表示目标对象public float relative

2021-09-01 11:55:53 390

转载 c#List.Sort(比较的方法)返回值意义

一个值,指示要比较的对象的相对顺序。返回值的含义如下:越小的越排在前面。 值 含义 小于零 此实例按排序顺序在obj前面。 零 此实例与obj在排序顺序中出现的位置相同。 大于零 此实例按排序顺序在obj后面。 ...

2021-09-01 10:59:04 609

转载 NGUI 必读1 NGUI渲染基础机制

原文 NGUI三大基础机制:https://gameinstitute.qq.com/community/detail/109914本文介绍以NGUI的版本是3.6.0版本为基础基础介绍  NGUI的UIWidget, UIDrawCall,UIGeometry和UIPanel等基础脚本。ØUIWidget是UI的基础组件(UILabel,UISprite)的基类,含有组件的基本信息(width,Height,color锚点等)ØUIGeometry是UIWidget的几何数...

2021-09-01 10:52:38 439

转载 NGUI(1) UIDrawCall

之前看过一个博主说,研究代码一开始不能思路铺的太开,一开始应该从最核心的部分看起,然后一层一层的向外围展开,一次只看一个类或一个方法,别想看A的时候又想看B,遇到不懂的时候可以先放着,特别时遇到很复杂的调用关系的代码时千万不要深陷其中。从最核心的一小部分开始着手,比如看DrawCall 类的时候完全不管Widget和Panel,只关心这个类对外开放什么接口,需要什么数据等等。所以研究NGUI ,首先来看看UIDrawCall吧:下面是UIDrawCall的关键方法的介绍: 一.UpdateGe.

2021-08-31 16:06:37 299

原创 C++用类实现二叉排序树(也称二叉查找树,二叉搜索树)

关于用C++结构体实现的二叉树:https://blog.csdn.net/sindyra/article/details/103631960这里我们使用类来实现一个功能相对完整的二叉树,这个二叉树是根据值的大小构建的,从小到大分别是左节点,根节点,右节点的插入节点时,所以每次插入新节点时会从根节点开始,跟所有节点的值进行判断大小,最后插入到合适位置。二叉树节点类:#pragma on...

2021-08-31 11:49:45 1122 1

原创 VS下Unity的内置的Editor宏定义失效,导致Unity卡死

VS下Unity的内置宏定义失效导致走入了非Editor宏定义的代码,出现Unity卡死的现象,鉴于出现过这种情况,做个记录。看下VS的这个选项是不是选成Release了,改成Debug就可以了

2021-04-22 11:22:43 1297 1

原创 关于SVN 的--depth=empty和--set-depth的配合使用:

关于SVN 的--depth=empty和--set-depth的配合使用:假设有这么一个场景,我们想要svn check一个地址为:svn co svn://127.0.0.1/XXX/server下的gameworld目录下的monster和item目录,但是server目录下的其他目录不需要,这时,我们可以进行以下操作:(1)check server 目录,但是只check一个空目录:svn co svn://127.0.0.1/XXX/server --depth=empty se..

2021-03-16 16:29:23 2373

空空如也

空空如也

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

TA关注的人

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