自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 观察者模式个人理解

文章目录观察者模式个人理解定义和优缺点个人理解个人实现代码观察者模式个人理解定义和优缺点观察者模式:当一个对象发生改变时,会自动通知依赖它的对象定义:对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。优点:使观察者之间相互独立,耦合性低建立了一套触发机制缺点:通知所有观察者会花费时间如果存在观察者和被观察者之间的循环关系,则会进行循环调用导致系统崩溃观察者只是知道被观察者发生了变化,但并不知道为何变化,发生了怎样的变化个人理解观察者模式

2021-11-23 17:31:48 151

原创 塔防类游戏实现(一)

文章目录游戏设计前言具体实现地图的设置与生成游戏设计前言场景中生成地面网格,每一个格子中可以拥有内容属性,和箭头指向(箭头指向可以关闭)内容属性主要有:空,出生点,墙,终点等等,默认设置为空出生点会产生怪物,墙能阻挡怪物具体实现地图的设置与生成新建空物体命名为GameBroad新建Quad面片,放在GameBroad下,命名为Ground新建Material,放一张格子图作为贴图新建GameBroad脚本//生成地图 GameBroad.cs中[SerializeField]

2021-11-17 22:48:58 2622

原创 动态编程和Lua热更新

文章目录前言动态读取程序集实现热更新Lua和Untiy的交互Lua脚本的热更新前言计算机语言有动态和静态之分,静态语言主要是像C和C++之类的语言。特点:需要预先编译为目标机器代码,CPU才能正确执行其指令。动态语言,通常称为脚本。特点:运行在其他语言实现的程序中,不需要预先编译,而是在程序运行的过程中实时编译,因此具有很强的灵活性C#和Java是比较特殊的语言,需要编译,但不是编译成机器代码,而是一种中间语言,在程序运行时,再由运行时程序将其编译成为目标代码。特点:性能上略有一定损失,但更加

2021-11-17 00:05:45 3352

原创 面试题个人简答(可能不准确)

面试题个人简答(可能不准确)协同程序一般放在monobehavior中的哪个函数中?StartCoroutine函数中开启协程,协同程序,顾名思义就是用来协助主要程序的,就好像一个额外的Update函数一样。yield就像是一个红绿灯,在不能满足yield后面的条件时,协程会被挂起,把使用权交回调用它的父函数。暂停游戏time.scaletime==0时,内置函数有什么变化不会影响Update和LateUpate的执行速度,只会影响FixedUpdate的执行简述StringBuilder的用途

2021-11-12 14:01:43 3092

原创 Lod技术的实现

Lod技术的实现Lod,多层次细节,其实就是同一个物体,制作多个不同精度的模型,根据物体的重要性和位置来显示不同精度的模型。思想是空间换时间。实现过程,在3Dmax 中制作三个不同分段数的球体。导入Unity,给上不同颜色的材质,红色精度最高,蓝色次之,紫色最低新建空物体,绑上Lod Group 组件点击Add,把不同的模型挂载到不同百分比的Lod上,再把所有模型Reset复位使用鼠标滚轮改变视口离物体的距离,近处物体是红色高精度模型,远处是紫色低精度模型打开Stats面板可以看

2021-11-09 22:33:59 1879

原创 Unity面试知识点

Unity面试知识点反射动态获取类型信息,动态创建对象,动态访问成员的过程。作用:在编译时无法了解类型,在运行时获取类型信息,创建对象,访问成员托管堆是一段内存,由项目脚本运行时的内存管理器自动管理,托管代码中创建的所有对象必须在托管堆上分配内存Unity 的GC是非代数和非压缩的,表明GC的时候必须扫描整个堆,堆扩展越大,性能会越低,非压缩是内存中的对象不会重新定位,会产生间隙特殊目录隐藏文件夹:以 . 开头的文件会被unity忽略Standard Assets: 这个文件夹的脚本最先被

2021-11-06 16:59:52 277

原创 经典排序代码一览

经典排序代码一览插入排序for(int i=0;i<n-1;i++)//插入排序{ int end=i; int tem=arr[end+1]; while(arr[end]<tem) { arr[end+1]=arr[end];//后移一位 --end; } arr[end+1]=tem;}冒泡排序while (n)//冒泡排序 { int flag = 0; for (int i = 0;

2021-11-05 23:02:26 97

原创 C#和C++的区别

C#背记(面试整理)C++给开发者的选项更加底层,C#不具备这些选项,但更安全C#基于CLR【公共语言进行时】数据类型的作用1,存储指定长度的数据,向系统申请指定长度的内存2,存储指定类型的数据(一个字节包括8个bite位)C#中的整形(有符号整形)int 2的31次方~2的负31次方short 2的15次方~2的负15次方Sbyte 2的7次方~2的负7次方long 2的63次方~2的负63次方(无符号整形-都是正数)uint 2的31次方ushort 2的15次方byt

2021-11-05 22:59:37 392

原创 内存池的实现

内存池的实现(Memory Pool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocks allocation)。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能,同时调用库内的内存分配函数,十分耗时。解决办法是使用内存池技术,大小固定,提前申请,重复利用。因为内存的申请和释放是很低效的,所以我们只在开始时申请一块大的内存(在该块内存不够用时在二次分配),然后每次需要

2021-11-05 22:45:51 71

原创 C++文件结构

C++文件结构C++程序主要包括两个文件,即头文件和源文件头文件以.h为扩展名,包括三部分内容,版权与版本的声明、宏定义和函数、类信息的声明。//版权和版本的声明#ifndef MAIN_H_#define MAIN_H_//宏定义class Node//类信息的声明{ int a;};int Add(int a, int b);//函数声明#endif // !MAIN_H_宏定义的目的是为了防止头文件被反复引用。当编译器编译头文件时,如果宏未被定义,则定义宏,并编译

2021-09-03 00:04:56 1233

空空如也

空空如也

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

TA关注的人

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