自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

冰镇油条

一个努力着的小人物

  • 博客(83)
  • 资源 (1)
  • 收藏
  • 关注

原创 unity c#报错解决

private Stack<System.Net.Sockets.SocketAsyncEventArgs> m_pool;报错:The non-generic type 'Stack' cannot be used with type arguments解决:引用命名空间System.Collections.Generic

2021-01-11 17:06:46 472

原创 unity Profiler 检查Lua性能

在ToLua中添加Profiler对Lua的性能检测1.首先在CustomSettings.cs中新增两个按钮[MenuItem("Lua/Attach Profiler"), false, 151]static void AttrachProfiler(){ if(!Application.isPlaying) { EditorUtility.DisplayDialog("警告", "请在运行时执行此功能", "确定"); return;

2020-12-15 11:51:55 966

原创 C#笔记整理之线程(一)

线程基础概念:1.线程有时被称为轻量级进程,是程序执行流得最小 单位2.线程是由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。3.线程自身不能拥有系统资源,但是可以使用线程所属进程所占有的系统资源4.线程可以创建和撤销另一个线程5.线程可以拥有自身的状态,例如 运行状态,挂起状态,销毁释放状态等等6.线程具有优先级,每个线程都分配了0-31级别的其中一个优先级,数字越大,优先级越高,然而手动分配优先级过于复杂,所以微软为我们的Thread类提供一个优先级的枚举,ThreadP

2020-11-25 23:05:42 205

原创 Unity笔记-UGUI合并批次的规则

按照叠层顺序处理:叠层顺序是按照Hierarchy中的顺序从上往下进行的,也就是越靠上的组件,就会被画在越底部。图集Batch规则:计算层级号的算法:如果有一个UI元素,它所占的屏幕范围内(通常是矩形),如果没有任何UI在它的底下,那么它的层级号就是0(最底下);如果有一个UI在其底下且该UI可以和它Batch,那么它的层级号与底下的UI层级一样;如果有一个UI在其底下但无法与它Batch,那么它的层级号为底下的UI层级+1;如果有多个UI都在其下面,那么按前两种方式遍历计算所有的层级号,.

2020-07-27 23:56:58 2474

原创 Unity AssetBundle原理

AssetBundle是unity提供的一个特定平台的归档文件(archive file),可以在运行时加载。AssetBundle包可以明确的表示互相之间的依赖关系,如a包中的材质引用了b包中的贴图。为了在网络上高效的传输,AssetBundle可以更具实际需求选择内置的压缩算法。AssetBundle对下载DLC(扩展包)很有用,可以减少安装包大小,优化终端平台的资源加载,减少运行时的内存压力。总结:游戏资源更新,减少游戏安装包大小,优化资源加载。AssetBundle策略.

2020-07-27 17:59:05 1024

原创 Lua笔记-Lua热更新原理

热更新原理Lua的require(modelname)把一个lua文件加载存放到package.loaded[modelname]。当我们加载一个模块时候,会先判断是否在package.loaded中存在,若存在则返回该模块,不存在才会加载(loadfile),防止重复加载。package.loaded是一个Tabel,其中包含了全局表_G、默认加载的模块(string,debug,package,io,os,table,math,coroutine)和用户加载的模块。最简单粗暴的热更新就是pa

2020-07-16 00:42:48 606

原创 游戏聊天系统

聊天系统一般要处理:聊天窗口的频繁信息刷新显示,黑名单屏蔽,私聊,语音信息处理等。为了优化界面的显示性能,需要将界面里面的每一条信息item进行复用,从而减少聊天界面创建出来的item数量。会用到一个简单的池ChatItemMgr当界面滑动时,会触发scrollView位置改变,根据位置事件监听,界面调用getChatItem()方法function ChatShowView:getChatItem(lastItemIndex, isUp, chatVo) local item

2020-06-06 15:31:53 581

原创 PSD文件生成Unity预设

流程:1.确保psd的单位是像素2.PS里面选择 文件->脚本->浏览,然后选择脚本changePSD.jsx3.将生成的xml文件放到Sublime Text,选择 文件->设置文件编码->UTF-8,保存4.打开Unity,Hierarchy界面创建新的Panel,选中Panel,选中Assets->UI工具->生成预设prefab->选中上面的xml文件,生成生成规则生成规则是根据显示的图层生成的,所以不需要生成的都设置为不可见.

2020-06-05 17:11:19 1000 1

原创 NGUI图形工作流程

UIWidget是UI的基础组件(UILable、UISprite)的基类,含有组件的基本信息(width、height、color等)。UIGeometry是UIWidget的几何数据,记录了顶点坐标、贴图的UVs和颜色信息。UIDrawCall是将多个UIWidget的UIGeometry组合起来一起绘制,具体的UIWidget如果公用一个UIDrawCall由UIPanel控制。...

2020-03-22 23:17:27 159

原创 lua重新学习笔记5(GC算法)

GC算法大体原理:遍历系统中的所有对象,看哪些对象没有被引用,没有引用关系的就认为是可以回收的对象,可以删除。从Lua 5.1开始,采用三色增量标记清除算法。好处:它不必再要求GC一次性扫描所有的对象,这个GC过程可以是增量的,可以被中断再恢复并继续进行的。3种颜色分类如下:白色:当前对象为待访问状态,表示对象还没有被GC标记过,这也是任何一个对象创建后的初始状态。换言之,如果一...

2020-03-22 22:51:56 534

原创 Unity3d机制性问题和C#性能问题

Unity3d机制性能问题1.减少Find,FindGameObjectWithTag,GetCompent等函数,特别是每帧使用,应尽可能在Awake,Start函数里查找,并缓存起来,以便多次使用。Awake在脚本被实例化的时候会被调用(不管脚本是不是enable),而且在脚本的生命周期中只会被调用一次。Awake是在所有对象实例化之后,所以可以使用诸如GameObject,Fine之...

2020-03-18 21:38:21 639

转载 lua重新学习笔记4(lua的面向对象实现)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/yzf279533105/article/details/80099358————————————————版权声明:本文为CSDN博主「YZF_Kevin」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本...

2020-03-18 14:06:13 91

原创 lua重新学习笔记3(原表metatable以及元方法)

table中,可以重新定义的元方法有以下几个:__add(a,b) 加法__sub(a,b) 减法__mul(a,b) 乘法__div(a,b) 除法__mod(a,b) 取模__pow(a,b) 乘幂__unm(a) 相反数__concat(a,b) 连接__len(a) 长度__eq(a,b) 相等__lt(a,b) 小于__le(a,b) 小于等于__index...

2020-03-17 17:57:54 201

原创 基础程序算法笔记

二分搜索(Binary Search)时间复杂度 :假使总共有n个元素,那么二分后每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。最坏的情况是K次二分之后,每个区间的大小为1,找到想要的元素令n/2^k=1,可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn).int Bina...

2020-02-15 15:26:23 155

原创 Unity+Shader入门精要(笔记八)内置文件和变量

包含文件:是类似于C++中头文件的一种文件,后缀是.cginc。CGPROGRAM//...#include "UnityCG.cginc"//...ENDCG UnityCG.cginc是我们最常接触的一个包含文件。UnityCG.cginc常用的结构体有//可用于顶点着色器的输入//顶点位置、顶点法线、第一组纹理坐标struct appdata_base ...

2020-02-03 23:46:01 164

原创 Unity+Shader入门精要(笔记七)最简单的顶点/片元着色器

Shader "Custom/testShader"{ SubShader { Pass{ CGPROGRAM #pragma vertex vert #pragma fragment frag float4 vert(float4 v : POSITIO...

2020-01-31 11:46:28 302

原创 Unity+Shader入门精要(笔记六)变换

变换线性变换linear transform(指可以保留矢量加和标量乘的变换)f(x)+f(y)=f(x+y)kf(x)=f(kx)线性变换包括:缩放scale,旋转rotation,错切shear,镜像mirroring,正交投影orthographic projection等。放射变换affine transform:就是合并线性变换和平移变换的变换类型。仿射变换...

2020-01-20 17:17:41 269

原创 Unity+Shader入门精要(笔记五)矩阵

2020-01-20 16:37:30 112

原创 Unity+Shader入门精要(笔记四)标量 矢量 点积 叉积

2020-01-19 22:15:11 290

原创 Unity+Shader入门精要(笔记三)表面着色器 顶点/片元着色器和固定函数着色器

表面着色器Shader "Custom/ Simple Surface Shader”{ SubShader{ Tags{ "RenderType" = "Opaque"} CGPROGRAM #pragma surface surf Lambert struct Input{ float4 co...

2020-01-19 15:14:48 604

原创 Unity+Shader入门精要(笔记二)基础Shader结构

材质和Unity Shader常见流程:(1)创建一个材质(2)创建一个Unity Shader,并把它赋给上一步创建的材质(3)把材质赋给要渲染的对象(4)在材质面板中调整Unity Shader的属性ShaderLab:Unity提供的编写Unity Shader的一种说明性语言基础结构Shader "ShaderName"{ Propertie...

2020-01-18 17:53:35 177

原创 Unity+Shader入门精要(笔记一)渲染流水线基础概念

渲染流水线一般分为三个阶段:应用阶段、几何阶段和光栅化阶段应用阶段:单位为渲染图元,在CPU上进行应用阶段分为三个阶段:(1)数据加载到显存中 ,HDD(硬盘)->RAM(内存)->VRAM(显存)(2)设置渲染状态(3)调用Draw Call几何阶段:GPU上进行几何阶段里面包括:顶点着色器(把顶点坐标从模型空间转换到齐次裁剪空间)曲面着...

2020-01-18 11:01:00 123

原创 lua重新学习笔记2(table表)

表CommonHeader:存放所有数据类型都通用的字段lu_byte flags:这是一个byte类型的数据,用于表示这个表中提供了哪些元方法。最开始这个flags是空的,也就是0,当查找一次后,如果该表中存在某个元方法,那么将该元方法对应的flag bit置为1,这样下一次查找时只需要比较这个bit就行了。每个元方法对应的bit定义在ltm.h文件中。lu_byte lsize...

2019-10-09 20:28:58 201

原创 lua重新学习笔记1(lua特性和string字符串)

GC(Garbage Collection,垃圾回收) 任何需要进行GC的Lua数据类型,必然以CommonHeader作为该结构体定义的最开始部分。可以将CommonHeader这个成员理解为一个基类的所有成员,而其他需要回收处理的数据类型均从这个基类继承下来,所以它们的结构体定义的开始部分就是这个成员。 GCObject这个联合体,将所有需要进行GC的数据类型全部囊括其...

2019-10-07 23:50:38 158

原创 c++笔记2

<>和"" 头文件<>:引用的是编译器的类库路径里面的文件"":引用的是程序目录的相对路径的文件static_cast<> 标准转换运算符,是一个强制类型转换操作符。static_cast支持指向基类的指针和指向子类的指针之间的相互转换最大作用:基础类型和对象的转换。强制类型转换符: static_cast ...

2019-10-07 13:08:36 107

原创 c++笔记

IO类三个独立的头文件:iostream, fstream, sstreamiostream:定义了用于读写流的基本类型fstream:定义了读写命名文件的类型sstream:定义了读写内存string对象的类型头文件 iostream类型:istream, wistream 从流读取数据ostream, wostream 向流写入数据iostream, wiostream...

2019-10-07 13:07:29 142

转载 基础知识整理5

sizeof(类),如何计算类的大小?1.类的大小类的sizeof()大小一般是类中的所有成员的sizeof()大小之和。确切的说,用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。注意:类只是一个类型定义,它本身是没有大小可言的。对象大小 = vptr(可能不止一个,这个很难确定,类中定义了一个virtual函数,仍然为占用4个字节)+ 所有非静态数据成员大小 + ...

2019-02-13 23:15:20 82

原创 基础知识整理4

如何定义一个只能在堆(栈)上创建对象的类1.只能在栈上创建对象的类只有使用new运算符,对象才会建立在堆上,因此,只要禁用new运算符就可以实现类对象只能建立在栈上class AA{public: AA() { cout&lt;&lt;"AA()"&lt;&lt;endl; } ~AA() ...

2019-02-12 23:45:30 75

原创 基础知识整理3

数据结构1.链表(1)链表建立、插入、删除·建立Node *L;L = new Node;L = NULL;//不带头节点的初始化L-&gt;=NULL;//带头节点的初始化·头尾插入元素p-&gt;next = L; L=p;//头插法Node *tail = new Node;//尾插法Node *cur = L;while(cur-&gt;next!...

2019-02-11 23:39:38 70

原创 基础知识整理2

网络TCP和UDPtcp是一种面向连接的、可靠的、基于字节流的传输层通信协议。udp(用户数据报协议)传输层协议,提供面向操作的简单不可靠的非连接传输层服务,面向报文。区别:a.tcp是基于连接的,可靠性高;udp是基于无连接的,可靠性较低;b.由于tcp是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差;同时过程复杂,也使其易于被攻击;而udp无连接,无建立...

2019-02-10 23:30:33 79

原创 基础知识点整理(杂乱)

死锁及其预防和处理方法死锁的规范定义:如果一个进程在等待只能由该进程停止才能引发的事件,那么该进程就是死锁的。(1)产生死锁的原因·因为系统资源不足·进程运行推进的顺序不合适·资源分配不当等。(2)产生死锁的四个必要条件1.互斥条件:每个资源要么已经分配给了一个进程,要么就是可用的。2.占有和等待条件:已经得到了某个资源的进程可以再请求新的资源。3.不可抢占条件...

2019-02-09 18:01:43 86

原创 NGUI UI动画笔记

Tween动画特点:1.都要设置From和To,也就是动画的起点和终点,然后动画会根据这两个点,插值出中间过渡点,最后完成起点到终点的过程。2.都有一个Tweener模块,里面需要设置动画的曲线、持续时间等。3.都有一个OnFinish模块,可以设置动画播放完成之后触发的事件函数。4.Tween动画都是实实在在地改变UI的相关参数,并不是一个“临时效果”。...

2018-03-16 20:45:04 305

原创 Unity加载模块笔记

    在游戏和VR项目的研发过程中,加载模块所带来的效率开销和内存占用(即“加载效率”、“场景切换速度”等)经常是开发团队非常头疼的问题,它不仅包括资源的加载耗时,同时也包含场景物件的实例化和资源卸载等。在我们看来,该模块的耗时是目前引擎中仅次于渲染的第二大模块。目前加载模块中最为耗时的性能开销可以归结为以下几类:资源加载、资源卸载、Object的实例化和代码的序列化。 资源加载    资源加载...

2018-03-01 09:46:41 899

原创 性能优化笔记-内存

Unity引擎开发的移动游戏,内存的开销大致可以分为以下三部分:1.资源内存占用;2.引擎模块自身内存占用;3.托管堆内存占用。资源内存占用:在一个较为复杂的大中型项目中,资源的内存占用往往占据了总体内存的70%以上。因此,资源使用是否恰当直接决定了项目的内存占用情况。一般来说,一款游戏项目的资源主要可分为如下几种:纹理(Texture)、网格(Mesh)、动画片段(AnimationClip)、...

2018-02-26 10:08:29 337

原创 c# 委托笔记

简单的委托:当建立委托对象时,委托的参数类型必须与委托方法相对应。只要向建立委托对象的结构函数中输入方法名称mm.Method,委托就会直接绑定此方法。使用my.Invoke(string message),就能显示调用委托方法。但在实际的操作中,无须用到Invoke方法,而只要直接使用myDelegate(string message),就能调用委托方法。using System

2017-10-09 10:39:02 132

原创 11

public int sortingOrder { get { return mSortingOrder; } set { if (mSortingOrder != value) { mSortingOrder = value;#if UNITY_EDITOR NGUITools.SetDirty(this);#endif Upd

2017-09-11 10:47:50 166

原创 c#笔记(五)

接口成员访问接口成员时通过LM形式的成员访问表达式和I[A]形式的索引器访问表达式来访问的,其中I是接口类型,M是该接口类型的方法、属性或事件,A是对应的索引器参数列表。对于严格单一继承(继承链中的每个接口均恰好有零个或一个直接基接口)的接口,成员查找、方法调用和索引器访问规则的效果与类和结构的完全相同:派生程度较大的成员隐藏具有相同名称或签名的派生程度较小的成员。然而,对于多重继承接口,

2017-07-28 14:02:06 163

原创 c#笔记(四)

访问基类成员应该注意:·调用基类上已被其他方法重写的方法;·指定创建派生类实例时应调用的基类构造函数;·基类访问只能在构造函数,实例方法或实例属性访问器中进行;·从静态方法中使用base关键字是错误的。using System;using System.Collections.Generic;using System.Linq;using System.Tex

2017-07-26 16:47:09 154

原创 c#笔记(三)

访问修饰符说明new 仅允许在嵌套类声明时使用,表明类中隐藏了由基类中继承而来的并且与基类同名的成员public 声明为公共类,表示不限制对该类的访问protected 声明为受保护类,表示只能从所在类和所在类派生的子类进行访问internal 声明为内部类,表示只有其所在类才能访问private 声明为私有类,访问仅限于本类abstract 声明为抽象类,访问不受

2017-07-24 20:40:56 164

原创 c#笔记(二)

c#是一种强类型的语言。在这类语言中,必须声明每个要创建的对象类型(如整型、浮点型、字符型),而编译器可以通过强制要求对象必须赋予正确的类型。c#的数据类型可分为两类:值类型和引用类型。两者的主要区别是值在内存中存储方式的不同。值类型在栈分配的内存中保存其实际值(或者作为另一更大的引用类型对象的一部分分配)。引用类型变量的地址保存在栈中,但实际对象存在堆中。引用类型的两个变量可以引用同一个对象,对

2017-07-20 20:30:51 169

tips穿透问题和UIScroll

UICamer的原理: UICamer就是通过在触摸/鼠标移动的位置的地方发射射线(就是Unity的Raycast),然后获取射线撞击的碰撞体(collider)信息,然后发射消息(通过Unity的SendMessage函数)给该碰撞体关联的GameObject的所有脚本 原本的做法是,给tips加一层背景遮罩(遮罩上加上Box Collider),当触发到遮罩Box Collider时,发送关闭tips事件,然后通过UICamera.lastHit.collider.gameObject获取到射线最后的碰撞对象。给这个对象SendMessage("OnClick") 用NGUI生成ScrollView 有两个重要的类UIScrollview和UIPanel(NGUI Version 3.7.8) ScrollviewPanel上面挂上UIPanel的作用是用来渲染,当有一块需要特殊处理的模块需要渲染时需要用到UIPanel专门控制。

2017-07-05

空空如也

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

TA关注的人

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