- 博客(55)
- 资源 (1)
- 收藏
- 关注
原创 C/C++指针字节大小
一个指针在32位操作系统上,占4个字节。一个指针在64位操作系统上,占8个字节。指针存放的是单个对象的地址,所以其占用字节大小跟语言无关,而是跟寻址能力有关。在计算机中,CPU是通过数据总线、地址总线、控制总线这三条总线和内存进行数据传输与操作。假设我们想通过CPU在内存中寻找一个数字X,首先CPU要通过地址总线,在内存中找到X的地址,通过控制总线知道该操作是读还是写,...
2020-04-10 02:22:43 3444
原创 C#基础之数据类型——基元类型
基元类型(预定义类型)8种整数类型类型 大小 范围 BCL名称 是否有符号 后缀 sbyte 8位 -128~127 System.SByte 是 byte 8位 0~255 System.Byte 否 short 16位 -32768~32767 System...
2020-04-06 03:02:37 1236
原创 xLua之简介
简述:xLua是由腾讯维护的一个开源项目。xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。特点:xLua在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是:可以运行时把C#实现(方法,操作符,属性,事件等等)替换成lua实现; 出色的GC优化,自定义struct,枚举在Lua和C#间传递...
2020-04-01 01:38:26 964
原创 toLua Framework之性能检测与优化
toLua之性能检测与优化https://zhuanlan.zhihu.com/p/57051520https://blog.csdn.net/qq_30678451/article/details/88038813http://luaprofiler.luaforge.net/index.html#downloadhttps://www.cnblogs.com/lightsong/p/...
2020-04-01 00:20:09 1398
原创 toLua Framework之简介
简述:toLua是jarjin写的开源热更新框架,到目前为止有许多成功的项目案例,是一款不错的框架。toLua:https://github.com/topameng/tolua框架底层库:https://github.com/jarjin/tolua_rumtimeUGUI版框架:https://github.com/jarjin/LuaFramework_UGUINGUI版框架...
2020-03-31 01:29:32 436
原创 Unity性能优化之性能检测工具汇总
Unity性能优化之性能检测工具https://blog.csdn.net/qq_39741605/article/details/81055318
2020-03-30 22:44:14 4416
转载 Google Protocol Buffer 的使用和原理
简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol ...
2020-03-18 01:09:04 363
原创 Unity性能优化之UGUI
问题:DrawCall OverDraw 事件检查 网格重建解决:1、防止不同图集穿插,防止同个图集重叠,层次重叠会限制DrawCall合并;少用Mask(模板测试用到);Scale = 0/Alpha Group=0,不要用alpha=0去隐藏物体或透明物体;UI的Pos.z 不等于0不会合并DrawCall;Alpha=0、Null Sprite依然会渲染;同...
2020-03-01 03:42:10 469
原创 Unity基础之音频资源设置
Force To Mono:将多声道音频混合为单声道Load In Background:在独立线程加载音频剪辑Ambisonic:是否环绕声LoadTypeDecompressOnLoad:在音频加载后马上解压缩。对较小的压缩声音使用此选项可以避免动态解压缩的性能开销。 请注意,在加载时解压缩Vorbis编码的声音将使用大约十倍于内存的内存(对于ADPCM编码约为3.5倍)...
2020-03-01 00:30:59 2695
原创 C#基础之公共语言基础结构(CLI)
C#的编译过程想要知道CLI,我们可以先了解一下C#的编译过程:C#代码首先通过C#编译器编译成公共中间语言(CIL)。 然后CIL再由虚拟执行系统(运行时)编译成机器码并开始执行。由此可见,C#与C、C++之类的直接编译成机器码的语言不同,它的底层平台是运行时,而C和C++的底层平台是底层操作系统和机器指令,C#的编译过程看起来就像多了一个CIL和运行时。那么多这两个东西有啥用呢?请...
2020-02-16 23:07:58 2394
原创 Lua基础之弱引用
简述一个table可以通过元表的__mode字段设置成弱引用模式,一般来说由三个模式:key是弱引用 value是弱引用 key和value都是弱引用-- 设置a为key弱引用a = {}b = {__mode = "k"}setmetatable(a, b)-- 设置a为value弱引用a = {}b = {__mode = "v"}setmetatable(a,...
2020-01-18 23:00:10 989 1
原创 Lua基础之垃圾回收
Lua内存管理机制Lua 使用的是垃圾自动回收机制。Lua 主要是通过运行一个垃圾收集器来收集所有垃圾(Lua 中不会被访问到但还没销毁的对象)以完成自动内存管理的工作。Lua的垃圾清理过程由4个阶段组成:标记、整理、清扫和收尾。标记阶段:Lua先将“根集合”中的对象标记为“活跃”。根集合中的对象就是Lua可以直接访问的对象,它们是注册表中的对象和主线程对象。然后,Lua将任何程...
2020-01-18 21:35:59 556
原创 Android内存机制剖析
Android内存机制剖析主要是进程占用内存和共享库占用内存,其中进程占用内存包含虚拟耗用,共享库内存包含比例分配共享库占用的内存。Android内存的四种形式VSS- Virtual Set Size 虚拟耗用内存(图中:2+3) RSS- Resident Set Size 实际使用物理内存(图中:2+3-1) PSS- Proportional Set Siz...
2020-01-17 22:18:32 231
原创 Unity性能优化之编辑器检查——贴图
前言资源优化一直是游戏性能优化的重要内容,对于贴图资源来说,除了打包图集以外,还可以根据游戏效果和需求对贴图进行压缩。贴图压缩的好处有减少包体大小 降低内存损耗,提高加载速度Unity3D的贴图压缩方案格式 平台 不支持机型 像素深度 尺寸要求 画质 备注 RGBA32 Android/iOS 无 32 ...
2019-12-25 02:32:25 1673 1
原创 解析AssetBunbdle包中的数据资源
在Unity的安装目录 ...Unity\Editor\Data\Tools下有两个工具:WebExtract.exe binary2text.exe1. 使用WebExtract 解压我们打好的ab包:在ab包同级目录下会生成同名文件夹:其中包含一个二进制文件:2. 使用binary2text 工具解析该文件:同级目录下会生成一个...
2019-12-18 00:03:44 413
原创 Unity3D读取AssetBundle失败:The file can not be loaded
今天项目换了台新mini打iOS版本的ab包,真机上出现资源读取失败并有如下报错The file can not be loaded because it was created for another build target that is not compatible with this platform. Please make sure to build AssetBundles ...
2019-12-17 23:30:48 5447 1
原创 Unity性能优化之图集打包
基于Unity3D的图集打包Unity3D的UGUI图集打包采取自动打包的方式,旨在让开发者彻底模糊图集的概念,无须关注图集是如何打包的,从而让开发者将更多的精力放在逻辑开发上。步骤如下,1. 首先创建3个Image组件分别显示3张不同的图片,此时还没打包图集,可以看出Batches为32. 设置图集打包开关,EditProject SettingsEditor,如...
2019-12-09 00:59:59 1466
原创 Lua基础之元表(metatable)
简介Lua中的元表允许我们通过一个tableA特殊的键值自定义另一个tableB的行为,这些特殊的键值称为元方法,tableA则称为tableB的元表。设置元表setmetatable(table,metatable):对指定 table 设置元表,如果元表中存在 __metatable 键值,setmetatable 会失败。 getmetatable(table):...
2019-12-05 02:47:55 333
原创 Lua基础之运行环境搭建
1. 下载下载地址:http://www.lua.org/可以直接下载已编译好的编译器、解释器和库文件(即Release版本),如图也可以下载源码进行编译,源码的好处是我们可以看到底层的实现逻辑,然后进行改造和优化。2. 编译当文件下载完成后,源码位于/src里面,如图,1. 打开Visual Studio,新建Win32...
2019-12-05 00:49:36 318
原创 Lua基础之模块与require
模块Lua可以利用table实现模块加载方法:从require传入的参数中获取模块名或直接自定义变量名; 初始化一个空table; 在全局环境_G中添加模块名对应的字段,将空table赋值给这个字段; 在package.loaded中设置该模块; 设置环境变量。例如:local moduleName = ... -- 模块名,可以在这里直接指定local ...
2019-11-13 01:46:12 782
原创 Lua基础之dofile、loadfile、require的区别
loadfile特点:只编译,不运行。一个lua文件是作为一个代码块(chunk)存在的,其实质就是一个函数,loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码 ,并且loadfile一旦出错不会抛出错误信息而是返回错误代号。一旦发生错误,loadfile会返回nil和错误信息,这样我们就可以自定义错误处理。想要通过loadfile加载并执行,可...
2019-11-07 21:52:30 735
原创 Lua基础之环境
全局环境:Lua将其所有的全局变量保存在一个常规的table中组成全局环境,并通过全局变量_G进行引用。这种组织结构的优点在于可以像操作其他table一样操作这个table。有时我们想操作一个全局变量,而它的名称却存储在另一个变量中,或者需要通过运行时的计算才能得到,可以通过value = _G[varname]来获得动态名字的全局变量。函数环境:Lua中的函数环境就是函数在执行时所见的...
2019-11-07 21:40:34 156
原创 Unity Shader入门
Properties语义块支持的属性类型Properties语义块支持的属性类型 属性类型 默认值的定义语法 例子 Int number _Int("Int",Int)=2 Float number _Float("Float",Float)=1.5 Range(min,max) number _Range("Range",R...
2019-10-29 02:15:28 122
原创 OpenGL学习笔记(2)之OpenGL简介
OpenGL定义OpenGL是一种应用程序编程接口(API),它是一种可以对图形硬件设备特性进行访问的软件库。OpenGL特性跨平台可移植 可拓展 速度快(渲染速度远远快于光线追踪器或软件渲染引擎)OpenGL存在形式OpenGL规范,这个规范定义了行业标准,使用非常完整和明确的术语描述了OpenGL。 OpenGL的实现,软件开发人员和顾客可以使它生成实...
2019-07-15 02:47:57 327
原创 OpenGL学习笔记(3)之渲染管线
渲染管线流程示意图渲染流水线的目的在于渲染一张二维纹理,将数学和图形数据转换成3D空间图像 一维或二维的实体或表面,如点、直线和多边形称为图元 几何阶段的一个重要任务是把顶点坐标变换到屏幕空间,涉及到的空间转换如图, 光栅化阶段的主要任务是决定每个渲染图元中哪些像素应该被绘制在屏幕上,并实际绘制或填充每个顶点之间的像素形成线段 所有渲染所需的数据都需要从硬盘(HDD)中...
2019-07-14 18:28:25 241
转载 Android应用ANR分析
一.ANR是什么Application Not Responding,字面意思就是应用无响应,稍加解释就是用户的一些操作无法从应用中获取反馈。在实际的应用中应当去避免这种现象,虽然他暂时不会造成应用崩溃,但是却极大的损坏了用户体验。二.ANR的触发原因出现ANR之后一个直观现象就是系统会展示出一个ANR对话框,大概是这样。谷歌文档中对ANR产生的原因是这么描述的:Andro...
2019-07-08 10:30:18 1320
原创 Mac环境下Jenkins的安装和启动用户修改
安装步骤安装java sdk; 安装brew工具(http://brew.sh/index_zh-cn.html); 打开终端,输入命令 brew install Jenkins 安装jenkins; 终端输入命令:brew services start Jenkins; 浏览器输入:http://localhost:8080 ,此时会出现一个初始化页面,需要按照页面上提供的路径找到初...
2019-05-19 20:13:28 3931
转载 ImageMagick的下载和配置
1. 在http://www.imagemagick.org/script/download.php,下载ImageMagick-7.0.5-5-Q16-x64-dll.exe,双击安装。注意在下图中把红框中的勾选即可。2. 新建一个VC++的工程,项目->属性VC++目录中包含目录中加入4项,ImageMagick安装路径下的include文件夹,和include里...
2019-05-05 00:03:11 1630
原创 3D数学之四元数与旋转
四元数两种记法负四元数单位四元数四元数的模四元数的共轭四元数的逆(共轭除以模)四元数的叉乘(结果为新的四元数)性质:1. 叉乘满足结合律不满足交换律:2. 四元数叉乘的模等于模的乘积:3.四元数叉乘的逆等于各个四元数的逆以相反顺序相乘:四元数的点乘(结果为标量)...
2019-04-19 02:05:46 620
原创 3D数学之法线变换
一般的变换矩阵不能变换法线?一般来说,变换矩阵可以把顶点和矢量从坐标空间变换到坐标空间,但是不能直接使用变换法线。推导法线变换矩阵:假如在坐标空间下有切线和法线,坐标空间下有切线和法线,有如下等式成立: 假设有法线变换矩阵,满足,联系上面成立的等式有:,有如下推导:可知时等式成立,从而,即原变换矩阵的逆转置矩阵。特别的,假如为正交矩阵,有。...
2019-03-23 19:45:36 273
原创 3D数学之坐标空间
坐标空间的变换渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程。主要涉及到的坐标空间变换如下图:坐标空间模型空间(对象空间或局部空间)模型空间的原点和坐标轴通常是有美术人员在建模软件里确定好的。 可以在顶点着色器中访问到模型的顶点信息。世界空间世界空间的原点放置在游戏空间的中心。观察空间(摄像机空间)观察空间是...
2019-03-23 18:21:50 659
转载 3D数学之透视投影矩阵的推导
视锥体如图,近截面与远截面之间构成的这个四棱台就是视锥体,而透视投影矩阵的任务就是把位于视锥体内的物体的顶点X,Y,Z坐标映射到[-1,1]范围。这就相当于把这个四棱台扭曲变形成一个立方体。这个立方体叫做规则观察体(CanonicalViewVolume,CVV)。如下图:变换方法或规则:如下图,有一点P,位于视锥体内,设坐标为(x,y,z).分别对x...
2019-03-23 14:27:24 1703
luaide 免费版 0.3.7
2018-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人