![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
常见游戏开发考点
文章平均质量分 86
积累笔试面试相关问题
一棵橙子树
C#/C++
展开
-
C#和Lua的内存管理
首先二者都是有自动GC的功能,C#是有CLR在保障下运行的,CLR的功能除了GC还有保证运行安全等。C#中数据类型分为值类型和引用类型,值类型存储在栈上,在程序运行一段时间后栈上内存会自动释放,无需CLR管理,引用类型存储在堆上,需要CLR管理并且通过GC来减少内存负担。C#垃圾回收的过程如下:1.暂停进程中的所有线程,避免线程在CLR检测期间访问堆内存。2.GC的标记阶段,托管堆...原创 2020-04-03 15:49:51 · 630 阅读 · 0 评论 -
对unity中AssetBundle的个人总结
一、AssetBundle的解释AssetBundle是一个压缩包,其中包含模型,贴图,预制体,声音甚至整个场景,可以在游戏运行时被加载AssetBundle自身保存着互相的依赖关系,也就是说不同的包之间可以相互联系压缩包可以使用LZMA和LZ4压缩算法,减少包的大小,更快的进行网络传输可以把一些下载内容放在AssetBundle中,减少游戏安装包的大小二、AssetBundl...原创 2020-04-03 15:50:06 · 286 阅读 · 0 评论 -
如何提高lua效率
JIT = Just In Time即时编译,是动态编译的一种形式,是一种优化虚拟机运行的技术。程序运行通常有两种方式,一种是静态编译,一种是动态解释,即时编译混合了这二者。Java和.Net/mono中都使用了这种技术。简答莱说就是在解释代码的同时将代码编译一次,对于重复执行的代码,就可以直接运行机器码,省下了解释代码的时间,所以会效率更高。...原创 2020-04-03 15:50:20 · 529 阅读 · 0 评论 -
让lua实现面向对象的方法
所谓面向对象,就是实现封装,继承,多态等面向对象的数据结构,而在C#中就是一个类。在lua中没有类的对象,那么应该如何实现类?lua中类的概念就是通过元表来实现的。插播一下lua中 and or not 逻辑操作:和C语音的&&,||相比,Lua的and or使用结果一样:即a && b等价于a and b,a || b等价于a or b.来看L...原创 2020-04-03 15:50:30 · 249 阅读 · 0 评论 -
lua内存管理及优化方式
lua内存管理:由于lua中有内存回收机制,所以本质上说lua与C/C++中的内存泄漏是不一样的,lua中有GC,理论上说是不会有内存泄漏的。当它进行GC的时候,会从根部开始扫描所有的对象,如果某个地方对这个对象还有引用,那么就不会把这个对象collect,这个对象就没有被GC,所以lua中的内存泄漏是指已经没有使用,但是外部依然还存在引用的对象。Lua的GC算法使用的所谓的“Mark And...原创 2020-04-03 15:50:40 · 3017 阅读 · 0 评论 -
霍夫曼树典型例题(构造霍夫曼树)
链接:https://www.nowcoder.com/questionTerminal/e5c8725926c8481180ad1a18ea35306b来源:牛客网给定25个字符组成的电文:DDDDAAABEEAAFCDAABCCCBADD试为字符A,B,C,D,E,F设计哈夫曼(Huffman)编码。(1) 画出相应的哈夫曼树。(2) 分别列出A,B,C,D,E,F的...原创 2020-04-03 15:50:48 · 7253 阅读 · 0 评论 -
C++计算sizeof 的值(指针和数组的大小计算)
链接:https://www.nowcoder.com/questionTerminal/e29b5b80c95548218219359da07c12c3?orderByHotValue=0&done=0&pos=366&mutiTagIds=138&onlyReference=false来源:牛客网char str[] = "http://www.xxx...原创 2020-04-03 15:50:58 · 2137 阅读 · 0 评论 -
3D渲染管线的理解
3D渲染管线也称为渲染流水线,通俗的讲可以理解为一个流程,就是我们准备一些数据,让GPU按照我们的要求,对这些数据进行处理,最后得到一张二维图像。渲染流程主要包括以下几个大的阶段:数据准备阶段、顶点处理阶段、光栅化操作阶段、像素着色阶段。一、数据准备阶段这个阶段主要是根据用户提供的顶点及索引信息,构建多边形,主要有点、线段和三角形 。数据填充允许我们提交我们想要的数据,这些数据包括了顶点数...原创 2020-04-03 15:51:05 · 698 阅读 · 0 评论 -
Unity脚本的生命周期(详细版本)
接下来,做出一下讲解:先执行的方法是Awake,这是生命周期的开始,用于进行激活时的初始化代码,一般可以在这个地方将当前脚本禁用:this.enable=false,如果这样做了,则会直接跳转到OnDisable方法执行一次,然后其他的任何方法,都将不再被执行。如果当前脚本处于可用状态,则正常的执行顺序是继续向下执行OnEnable,当然我们可以在另外一个脚本中实现这个脚本的启动:this...原创 2020-04-03 15:51:15 · 508 阅读 · 0 评论 -
委托和事件的区别与联系
1.可以认为委托就是一种特殊的类,委托类的对象可以保存对函数方法的一个或者多的引用,类似于C/C++中的函数指针,但是委托比函数指针可使用性更强。首先,函数指针只能指向静态函数,但是delegate都可以,其次delegate是面向对象的、类型安全的对象,也就是说运行时runtime能够保证delegate指向一个有效的方法,而不需要担心指向无效的地址或者地址越界等。2.一个委托可以为其增加对...原创 2020-04-03 15:51:23 · 3475 阅读 · 0 评论 -
对unity中DrawCall的理解
1.什么是DrawCall,有什么方法可以减少DrawCall?DrawCall的理解:DrawCall就是CPU对图形回执接口的调用,CPU通过调用图形库(Directx/OpenGL)接口,命令GPU进行渲染操作DrawCall过多会导致性能降低,但是其中的关键在与CPU,每一次回执CPU都要调用DrawCall,而在调用DrawCall之前,CPU还要做很多准备工作:检测渲染状态...原创 2020-04-03 15:51:31 · 713 阅读 · 0 评论 -
对Unity中AssetBundle的理解
1.什么是AssetBundle?谈谈你对AssetBundlen内存分配情况的理解(1)AssetBundle是一个压缩包,其中包含模型,贴图,预制体,声音甚至整个场景,可以在游戏运行时被加载AssetBundle自身保存着互相的依赖关系,也就是说不同的包之间可以相互联系压缩包可以使用LZMA和LZ4压缩算法,减少包的大小,更快的进行网络传输可以把一些下载内容放在AssetBun...原创 2020-04-03 15:51:43 · 975 阅读 · 0 评论