自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity脚本编程零碎学习笔记3-Unity优化

因为被“批处理”的两个物体的网格模型需要使用相同材质的目的,在于其纹理是相同的,这样才可以实现同时渲染的目的。Mono托管内存中存放的东西和Unity3D的内部内存中存放的东西究竟有何不同?其实Mono的内存分配就是很传统的运行时内存分配。因为GC处理的是托管堆,而不是Unity引擎的资源内存。GC是Mono运行时的机制,而非Unity引擎的机制,所以GC主要是针对。所以GC不是用来处理引擎的Assets(纹理、音效)的内存释放的,因为。GC在释放内存的同时,增加CPU的开销,因此对于。

2024-04-30 10:53:25 972

原创 Unity脚本编程零碎学习笔记3-Unity中使用AssetsBundle

简单的说就是可以从Unity中导出的包含了我们所选择的资源的文件,这些资源包括任何可以被Unity3D引擎识别的资源格式,例如模型、贴图、音频剪辑或者一些游戏场景等。(需要注意的是,自定义的二进制文件后缀必须是bytes,这样导入时才会作为TextAssets资源导入。这些文件经过专门压缩成为Unity3D所以定义的格式,并且当使用Unity开发使用它们时也能被正确加载和释放。(个人总结:AssetBundle就是Unity可以识别的一些资源压缩后的文件)作用:由于。

2024-04-25 14:22:36 1207 1

原创 Unity脚本编程零碎学习笔记2-Unity协程背后的迭代器

2状态:只有IEnumerable才有,表明是在第一次调用GetEnumertator之前的状态-1状态:表明迭代器正在执行(Running),也用于(After)表明迭代已结束0状态:Before状态,表明MoveNext()一次都还没有调用过正数(1,2,3,4…):表示从遇到yield关键字之后,代码从哪里恢复执行。

2024-04-24 17:33:15 401 1

原创 Unity脚本编程零碎学习笔记1-prefab和实例化过程

同时,还可以将二进制文件反序列化成为一个和被反序列化的对象一样的新的游戏对象。首先是要获取成员字段类型信息数组,通过调用GetSerializableMembers方法来构造一个新的MemberInfo数组 ,获得一个已经序列好,现在等待被反序列化的一组字段。先将参数origin所引用的游戏对象序列化,得到了经过序列化之后的序列化流后,再使用反序列化机制将这个序列化流反序列化生成一个新的游戏对象。到了这一步,便获取到了对应的字段信息以及与字段对应的数值信息,一个新分配的对象。,这一步则是要获取其所对应的。

2024-04-24 11:58:12 352 1

原创 时间戳、时区认识

然而,由于地理位置的差异,虽然时间戳在地球的每一个角落都是相同的,但是在相同的时间点会有不同的表达方式,因此有了另外一个时间概念,叫时区。在设备中,可以手动切换当前的系统时区,当你选择在不同的时区,你的当前时间是不一样的。如果要在不同地区转换出来的日期都是一样的,需要对时间戳进行时区换算,我是看的这个大佬的文章。相当于是时间戳在全球各地都是一致的,但是在时间戳表达为日期时,不同的时区换算出来不一样。它是一种时间表示方式,1970年01月01日09时00分00秒。1970年01月01日08时00分00秒。

2024-02-20 11:22:11 760

原创 Unity丛林战争学习02_TCP_解决分包和黏包的问题

1.分包和黏包

2020-05-16 11:18:41 384

原创 Unity丛林战争学习01_TCP_异步接受连接和异步接收消息

1.服务器端服务器端所要做的事:①创建服务器端套接字(Socket)②绑定套接字(Bind)③监听连接(Listen)④异步接受连接(BeginAccept)⑤结束异步接受连接,返回客户端的Socket(EndAccept)⑥异步接收消息 (BeginReceive)⑦结束异步接收消息 (EndReceive)注意:1.此处的EndReceive方法并不会立即停止接收,而是直到有数据进入,才会停止接收2.在使用异步方法时,就相当于开启一个线程,当主线程结束时,其他线程也不会执行,所以主

2020-05-16 02:17:50 497 1

原创 unity设计模式11_UI管理器

1.引入前面我们用一个UI基类来对一个Panel下的所有组件进行管理,现在我们要对一个Canvas下的所有Panel进行统一管理,即显示和隐藏Panel一般有两种办法进行显示和隐藏Panel:1.设置Panel的Active(SetActive)为true或者false,即显示或隐藏Panel2.将Panel做成预设体,进行实例化和销毁Panel前者如果面板过多,会占用过多的内存,所以我...

2020-05-06 11:45:47 869

原创 Unity设计模式10_UI基类

1.引入:常用的两种为Button添加事件的方法:1.写一个public函数,然后将该脚本挂载到一个物体上,然后拖拽到button的onclick组件上。2.声明一个button变量,在inspector面板将要添加事件的button赋值给button,然后再在脚本里面button.onClick.AddListener(SayNewGame)如果直接这样写的话有两种弊端:1.容易拖拽错...

2020-05-06 10:38:59 662

原创 Unity设计模式09_音效管理模块

1.思路:游戏中的声音主要分为两种:一种是背景音乐,一种是音效(频繁切换)对于两种声音这样进行管理:背景音乐:由一个空物体上的一个AudioSource进行控制,我们只需对它进行暂停、停止、开始等操作。音效:在游戏中,音效往往需要频繁切换,我们也用一个空物体进行控制,只不过不只用一个AudioSource,而是动态的进行增加和减少AudioSource组件,当有音效需要播放时,在空物体上增...

2020-05-04 21:10:37 514

原创 Unity设计模式08_事件中心改进

1.问题引入:前面书写的事件中心时,为了保证什么类型的参数都能传递,我们参数设置的是object类型,但是这样如果传递的值如果为值类型就涉及到装箱拆箱。如果要避免这种问题,我们很自然的想到了泛型。2.大致思路前面我们把事件中心的字典设置为 Dictionary<string,UnityAction<Object>> dic = new Dictionary<...

2020-05-04 14:30:18 369

原创 Unity设计模式07_输入控制模块

1.引入:一般我们在unity中书写输入模块,一般都是if+Input写一堆,有时候一个按键的事件要在不同的脚本的Update中书写判断很多次,得非常啰嗦。2.思路:创建一个InputManager事件,用于专门获取按键消息,然后利用事件中心分发对应事件,需要响应的脚本监听这一事件3.编码:public class InputManager : SingeCaseBase<Inpu...

2020-05-03 16:05:53 446

原创 Unity设计模式06_异步加载资源

与异步加载场景类似,只是加载资源一般不用提供加载资源UI界面,开始加载资源后直接yield return让程序运行外部代码即可:1.同步加载资源: /// <summary> /// 同步加载资源 /// </summary> /// <typeparam name="T"></typeparam> /// <param na...

2020-05-03 13:29:33 1752

原创 Unity设计模式05_场景切换模块

1.同步加载场景: /// <summary> /// 同步加载场景 /// </summary> /// <param name="name"></param> /// <param name="action"></param> public void LoadScence(s...

2020-05-02 15:16:02 321

原创 Unity设计模式04_公共Mono模块

整理自:Bilibili-唐老湿的Unity程序基础框架1.使用目的为了使不继承MonoBehaviour的类也可以使用Update、协程等2.主要思路Update实现: 创建一个继承自MonoBehaviour的mono类,定义一个Event,在Update里面调用这个Event,给外部提供添加委托的函数(+=),这样添加的函数就可以在mono类中的Update进行帧更新了。封装成“单...

2020-05-02 12:41:27 678

原创 Unity设计模式03_事件中心

整理自:Bilibili-唐老湿的Unity程序基础框架1.问题的引入假设场景中有这样几个GameObject:我们需要实现的是在Monster死亡时,让Player经验值增加,Task处理任务进度,Other处理其他怪物死后该做的事情那么这个代码大概是: public void MonsterDead() { GameObject.Find("Task").GetCompon...

2020-04-30 19:07:02 641

原创 Unity设计模式02_对象池模块

整理自:Bilibili-唐老湿的Unity程序基础框架1.对象池:引入:当我们在unity场景中需要多次重复的对某一个GameObject进行创建和销毁时,为了减少GC(Garbage Collection垃圾回收)给游戏带来的卡顿。(注意:当我们在unity中销毁物体上,并不会真的在内存中去释放空间,只是断开引用,最终的释放空间是在当内存满的时候进行GC)原理简述:当场景中不需要该Ga...

2020-04-30 11:13:36 351

原创 Unity设计模式01_单例模式

1.单例模式定义通过单例模式的方法创建的类在当前进程中只有一个实例(例如unity场景中的GameManager只允许被实例化一次)2.单例模式的基类 public class SingeCaseBase<T> where T : new() { private static T instance; public static T G...

2020-04-29 12:00:29 333

原创 c#基础学习1——泛型

c#基础学习1——泛型整理自慕课西安交通大学的c#程序设计慕课西安交通大学——c#程序设计1.泛型:1.1使用泛型的方法:void Display<T>(T[] input){ foreach(T k in input) { }}该函数在实际调用时,由编译器自动匹配T的类型1.2使用泛型的类:class stack<T>{} ...

2020-04-28 18:58:44 184

空空如也

空空如也

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

TA关注的人

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