1.ugui优化方法:

可以参考我另一篇文章:

https://blog.csdn.net/qq_17347313/article/details/99640957

2.lua string原理:

参考我的lua数据结构分析文章:

https://blog.csdn.net/qq_17347313/article/details/100698348

3.c# string原理:

参考以下文章:

https://www.cnblogs.com/qingsp/p/6907553.html

4.lua读表,如果有一个字段是数组,怎么优化内存

可以使用符号分割的方式在配置中表示,如“1,2,3,4,5”这样用字符串表示,读取到lua中,是同一个字符串就会只保存一份。

5.unity动态合批,静态合批的区别:

Unity在 Player Setting 里的两个功能选项 Static Batching 与 Dynamic Batching。功能描述如下:

  1. Static Batching 是将标明为 Static 的静态物件,如果在使用相同材质球的条件下,Unity 会自动帮你把这两个物件合并成一个 Batch,送往 GPU 来处理。这功能对效能上非常的有帮助,所以是需要付费才有的。
  2. Dynamic Batching 是在物件小于300面的条件下(不论物件是否为静态或动态),在使用相同材质球下,Unity就会自动帮你合合并成一个 Batch 送往 GPU 来处理。
  3. 动态合批是有一些条件的,如下:

6.渲染管线:

顶点着色器,图元装配,几何着色器,光栅化,片段着色器,深度模板测试与混合。

7.顶点着色器与片段着色器作用:

顶点着色器:

它把一个单独的顶点作为输入。顶点着色器主要的目的是把3D坐标转为另一种3D坐标(后面会解释),同时顶点着色器允许我们对顶点属性进行一些基本处理。

片段着色器:

片段着色器的主要目的是计算一个像素的最终颜色,这也是所有OpenGL高级效果产生的地方。通常,片段着色器包含3D场景的数据(比如光照、阴影、光的颜色等等),这些数据可以被用来计算最终像素的颜色。

8.unity中存在哪些坐标系:

世界坐标

世界坐标按照笛卡尔坐标系定义出来的绝对坐标系,下面的各种坐标系都建立在世界坐标的基础上。我们知道二维平面内任意一个点可以用二维坐标(x,y)来表示,如果将这个概念延伸到三维空间内,那么三维空间内任意一个点都可以用三维坐标(x,y,z)来表示。这就是世界坐标的概念啦,坐标系通常可以分为左手坐标系和右手坐标系,而Unity3D采用的是左手坐标系。在Unity3D中我们可以使用transform.position来获取场景中一个物体的世界坐标,通常情况下编辑器中的Inspector窗口是以世界坐标来描述一个3D物体的位置的,除非当一个3D物体存在父物体的时候,它会以相对坐标来描述其位置。

屏幕坐标

屏幕坐标是以像素来定义的,它的范围是以左下角为(0,0),右上角为(Screen.width,Screen.height)定义的这样一个矩形。屏幕坐标是一个3D坐标,Z轴是以相机的世界单位来衡量的。屏幕坐标和相机之间满足:Screen.width=Camera.pixelWidth和Screen.height=Camera.pixelHeight这两个条件。例如我们将相机正对着场景中的原点(0,0,0),相机的Z轴分量为-10,按照屏幕坐标的定义,假设屏幕为800X640的大小,则此时原点转化为屏幕坐标后应该是(400,320,10)。在Unity3D中我们可以使用WorldToScreenPoint来将一个世界坐标转换为屏幕坐标。

视口坐标

视口坐标是标准化后的屏幕坐标。标准化的概念我们可以引申到向量的标准化中,比如一个向量(x,y)将过标准化后可以得到一个单位向量(x’,y’)。类似地,视口坐标是以0到1间的数字来表示的,它的范围是以左下角为(0,0),右上角为(1,1)定义的这样一个矩形。视口坐标是一个3D坐标,Z轴是以相机的世界单位来衡量的。通过对比可以发现视口坐标和屏幕坐标特别的相似,所以这里大家可以对比着来学习。同样以屏幕坐标中的例子来将这里的转换,例如我们将相机正对着场景中的原点(0,0,0),相机的Z轴分量为-10,按照屏幕坐标的定义,假设屏幕为800X640的大小,则此时原点转化为屏幕坐标后应该是(0.5,0.5,10)。在Unity3D中我们可以使用WorldToViewportPoint来将一个世界坐标转换为视口坐标。

GUI坐标

GUI坐标是指通过OnGUI方法绘制UI时使用的坐标。这个坐标系和屏幕坐标类似,它同样是以像素来定义的,它的范围是以左上角为(0,0),右下角为(Screen.width,Screen.height)定义的这样一个矩形,GUI坐标是一个2D坐标(绝对坐标)。因为GUI在早期的文章中曾有所设计,属于Unity3D中较为基础的内容,此外我们知道使用绝对坐标来进行布局的话是没有办法做自适应的,所以这部分内容我们就不展开讲了,UI自适应的一个主要观点就是不要使用绝对坐标!不要使用绝对坐标!不要使用绝对坐标!重要的事情要说三遍的嘛!这里想特别说说Unity4.6以后推出的全新UI支持:uGUI。在uGUI的Screen Space模式下,Unity3D的编辑器以屏幕坐标来显示UI元素的位置;在World Space模式下,Unity3D的编辑器以世界坐标来显示UI元素的位置。相信这一点大家在使用的时候都没有注意到,最近在看一个论坛帖子的时候发现对uGUI坐标转换的相关知识一片茫然,所以对这部分内容进行了深入的研究,最终得出的结论是:uGUI的坐标本质上是特殊的屏幕坐标,因为uGUI的Anchor决定了该坐标系的原点,pivot决定了元素本身坐标系的原点,正是这两个属性让uGUI的坐标看起来显得扑朔迷离。RectTransform组件继承自Transform,所以它们的position和localPosition是等价的,都是世界坐标;anchoredPosition是UI元素的屏幕坐标,在对UI元素进行操作的时候应该考虑使用这个坐标。

局部坐标系

    局部坐标系也称为模型坐标系或物体坐标系。 
    每个物体都有自身独立的物体坐标系。当物体移动或改变方向时,和该物体相关联的坐标系将随之移动或改变方向。 
    模型Mesh保存的顶点坐标均为局部坐标系下的坐标。

9.c# gc原理:

参考:

问答方式:https://blog.csdn.net/yonglong8/article/details/9197077

原理分析:https://blog.csdn.net/songshu5555/article/details/54962812

10.C++ RTTI(运行时类型识别)与编译时类型识别:

RTTI:实现多态,虚函数,虚表机制,使得程序可以根据类的类型,调用正确的函数

编译时类型识别:重载

11.数据结构之链表的环检测:

使用快慢指针,循环一次快指针走2个数据,慢指针走一个,如果两个指针在某次相等,则存在环

12.帧同步优化方式:

UDP,冗余帧,TCP重传,逻辑层表现出分离,jitterbuffer抖动优化

13.协程的理解:这里给大家看一副图可解:

总的来说这次面试不是很好,一些东西记不很清楚了,希望大家面试的时候稍微复习一下,失去机会挺可惜的。

腾讯游戏unity客户端面试题相关推荐

  1. 2022年Unity客户端面试题总结

    一.前提 在工作几年,经历过几次面试之后,都会发现不同的公司的面试套路都是大同小异的.但是很多知识点在工作当中并不会经常性的使用,所以在面试之前都需要"临时抱佛脚".我之前准备面试 ...

  2. Unity客户端面试题集锦

    正在求职中&近期准备开始求职的小伙伴们看过来-贴心的我,这次又给大家准备了[面试题大礼包]!! Unity游戏开发工程师的面试过程中,我们总能接触到许多眼熟的面试题目,这部分的分数如果不小心丢 ...

  3. Unity游戏开发客户端面经,六万字面经知识点,一篇就够了

    目前这是记录一些被常问的面经,面向初级,总结了大约六万字的常问知识点,有各种大佬的链接可以深入的了解.希望可以帮助正在准备八股的同学们. C#:Unity游戏开发客户端面经--C#(初级)_正在奋斗中 ...

  4. Unity游戏开发客户端面经——设计模式(初级)

    前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习.由于文本太多,按类型分开.这一篇是 设计模式 常问问题总结,有帮助的可以收藏. 1. 面向对象设计原则:     1. ...

  5. ieg技术总监_游戏C++客户端面经(完美,360,腾讯IEG,网易雷火)

    一.前言 先说说自己的一些情况吧,本人来自双非一本理工科学校,软件工程大三学生.大学期间参加过ACM竞赛,也进过实验室做过项目.主要学习的语言是C++,但是项目开发却是用的Unity+C#进行项目开发 ...

  6. Unity游戏开发客户端面经——数学(初级)

    前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习.由于文本太多,按类型分开.这一篇是 数学 常问问题总结,有帮助的可以收藏. 1. 四元数与欧拉角 1.1 四元数概念 四 ...

  7. Unity游戏开发客户端面经——Unity(初级)

    前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习.由于文本太多,按类型分开.这一篇是 Unity 常问问题总结,有帮助的可以收藏. 1. 生命周期 Awake -> ...

  8. Unity游戏开发客户端面经——C#(初级)

    前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习.由于文本太多,按类型分开.这一篇是C# 常问问题总结,有帮助的可以收藏. 1.引用类型,值类型        1.1 介 ...

  9. Unity游戏开发客户端面经——网络(初级)

    前言:记录了总6w字的面经知识点,文章中的知识点若想深入了解,可以点击链接学习.由于文本太多,按类型分开.这一篇是 网络 常问问题总结,有帮助的可以收藏. 1. TCP与UDP的区别 区别 UDP T ...

最新文章

  1. 零基础如何学习软件测试
  2. Eclipse内存分析工具的用法
  3. 【学生信息管理系统】——总结篇
  4. excel loc() python_总结:像Excel一样使用python进行数据分析
  5. c语言的有趣小程序,一个有趣的小程序
  6. arcgis几何修复有作用吗_修复损坏的 shapefile
  7. linux内核网络新特性,Linux内核4.4版本带来的网络新特性
  8. html cursor居中,CSS cursor属性
  9. 第十二章 DOM2和DOM3
  10. iSCSI发起程序找不到iSCSI_Software_Target_33服务的虚拟磁盘解决办法
  11. 10006---当当架构部张亮:从码农到大牛,技术与心境的双重提升
  12. 触动-20181130
  13. IoT名企:物联网云服务龙头企业软硬实力兼备,机智云喜获高新技术企业认定
  14. Ant Design of Vue中a-form-model多行表单对齐和验证
  15. Android App签名的那些事
  16. background-clip
  17. php各种编码集详解和在什么情况下进行使用
  18. [转]用Eclipse进行可视化Java界面设计
  19. 【STM32H7教程】第89章 STM32H7的CAN FD总线基础之前世今生
  20. 中台化实践——优雅停机方案

热门文章

  1. 深入理解设计模式:设计模式定义、设计原则以及组织编目
  2. linux服务器安全(1)
  3. 干货分享 | 如何写出清晰易懂的交互文档?
  4. L6915E: Library reports error: __use_no_semihosting... but a semihosting fgetc was linked in原因之一
  5. 堆排序(完全二叉树)最后一个非叶子节点的序号是n/2-1的原因
  6. 【iOS】动画之人脸识别 —— ARScanning
  7. C# listView 绑定数据
  8. 莫西莫西是错的?你不知道的日语电话姿势
  9. ensp使用mpls-vpn +ospf+bgp+ISIS实现网络通信
  10. 仿IPAD密码输入界面