学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

668

积分

0

好友

83

主题
发表于 2025-3-17 15:04:08 | 查看: 188| 回复: 0
本帖最后由 jinchanchan 于 2025-3-17 15:05 编辑

腾讯光子工作室游戏客户端
说一下 unity dots 的 ecs
Unity的DOTS是Unity的一种高性能编程模式,核心是ECS 。ECS主要包括三个基本概念:实体(Entity)、组件和系统。
  • 实体:代表游戏世界中的对象,比如玩家、敌人或任何想要表示的事物。在ECS中,实体本身几乎不包含任何数据或行为,它更像是一个标识符。
  • 组件:包含数据的容器,用于描述实体的特征或状态。例如,一个位置组件可能包含X、Y和Z坐标。
  • 系统:包含逻辑和行为,用于操作具有特定组件的实体集合。系统会执行具体的任务,如移动所有具有位置和速度组件的实体。

baker 过程主要是输出了什么
产生的输出通常包括:
  • 贴图(比如法线贴图、位移贴图、环境光遮蔽贴图等),用于提高渲染效率,同时保持视觉上的复杂度和细节。
  • 静态光照信息,将光照信息嵌入到贴图中,减少实时光照计算的需要。

说一下 archetype 的概念,它的用处主要是做什么的
Archetype的概念源自于Unity的ECS 中,指的是一种具有一组特定组件配置的实体模板。每个Archetype定义了一组实体共享的组件类型,这使得具有相同组件集合的实体可以高效地存储和访问。
Archetype的主要用处是优化数据的存储和访问。通过将相同Archetype的实体数据紧凑地存储在一起,Unity可以更高效地遍历这些数据,从而提高了缓存的命中率和性能。这种数据组织方式使得针对大量相似实体进行操作时,如同批处理一样高效。


entity 上面挂载三个 component,数据是分开存的还是存在一起的
实体上挂载的组件数据是分开存储的


uitookit 和 ugui 区别
  • UI Toolkit:是一种新的UI构建方式,它使用CSS样式表进行样式定义,支持视觉树,旨在提高UI开发的效率和性能,主要应用于编辑器扩展开发,但也支持运行时UI开发。
  • UGUI(Unity GUI):是Unity的早期UI系统,基于游戏对象和组件,通过拖放和配置这些组件在场景中创建UI。它非常直观,易于入门,适用于游戏内UI开发。

说一下水位线对象池
水位线对象池是一种内存管理策略,它通过预先分配一定数量的对象,并在这个基础上动态地根据需要创建或回收对象来管理内存使用。"水位线"指的是对象池中对象的数量阈值:低水位线和高水位线。
  • 当对象池中的可用对象数量下降到低水位线以下时,对象池会预先创建更多的对象,以避免运行时创建对象的开销。
  • 当对象池中的对象数量上升到高水位线以上时,多余的对象会被销毁或回收,以释放内存。

uitoolkit 里面怎么去实现自定义事件
  • 创建一个新的事件类,继承自EventBase<T>,其中T是你的新事件类名。
  • 在你的自定义事件类中,添加所需的属性和方法。
  • 使用RegisterCallback<T>()方法在感兴趣的UI元素上注册事件监听器,T是你的自定义事件类。
  • 使用visualElement.SendEvent()方法触发自定义事件。

c++ 虚函数实现原理,继承的时候虚函数表会发生什么
C++的虚函数是通过一个称为虚函数表的机制实现的。每个包含虚函数的类或者结构体都有一个相应的虚函数表。
虚函数表是一个存储指向虚函数的指针数组。每个类或者结构体的对象都有一个指向其虚函数表的指针,称为虚指针。
当我们声明一个基类指针指向派生类对象并通过该指针调用虚函数时,编译器会首先查找基类的虚函数表,找到虚函数的索引,然后利用这个索引到派生类的虚函数表中找到并调用对应的派生类函数。这个过程就是多态的实现原理。
当我们进行继承时,派生类会继承基类的虚函数表,并根据需要在其中添加新的虚函数指针,或者替换原有虚函数指针,因为派生类可以重写基类的虚函数。这使得基类指针可以调用派生类重写的虚函数,实现多态。

c++ 如何调用 c 函数
确保C函数的声明被放置在extern "C"的代码块中,这样可以告诉C++编译器这些函数按照C语言的方式进行链接。
extern "C" {    // C函数声明    void c_function();}正常调用C函数,就像调用C++函数一样。
int main() {    c_function();  // 调用C函数    return 0;}使用extern "C"防止C++编译器改变函数名(即名称修饰),这样链接器就能正确识别和链接C函数

字节对齐的概念和意义
字节对齐是计算机内存管理中的一种策略,它要求数据的起始地址按照某个数布的倍数进行对齐。
实现字节对齐的意义有两点:
  • 更快读取速度:在许多系统中,如果数据落在自然边界上(即地址是某个值(如4或8)的倍数),硬件可以在一个操作中取得数据。如果没有对齐,可能需要进行多次内存访问才能获取或存储同样的数据。
  • 硬件要求:许多硬件平台只能在特定地址处访问特定类型的数据,对齐可以确保满足这些硬件平台的数据访问规定。例如,某些硬件平台不允许跨越字边界来存取数据,或者在这种系统中这样做会严重影响性能。

float 变量如何和 0 比较
使用一个很小的正数作为容差来判断浮点数是否“等于”0。例如:
const float EPSILON = 1e-6; // 定义一个很小的数float x = ...; // 浮点数变量if (abs(x) < EPSILON) {    // x “等于” 0}这种方法通过检查x是否在0的一个很小的区间内来判断x是否“等于”0。

协程算是异步吗
协程是一种异步编程的模型。协程允许异步执行操作如输入/输出操作、耗时计算等,而不会阻塞程序的执行。这样,可以在一个线程内实现多个操作的并发执行,提高程序的效率和响应速度。

unity 协程是在主线程还是子线程,靠什么调度的
Unity中的协程运行在主线程,它们由Unity的游戏循环调度。协程通过使用yield语句暂停执行,并将控制权返回给游戏循环,随后在合适的时机继续从暂停的地方继续执行。这允许进行延时操作和等待Unity的其他事件,而不会阻塞主线程。

gameobject 上面的协程什么时候销毁
Gameobject上面的协程会在该Gameobject被销毁时结束。

顺便给大家分享一下,民族企业大厂前后端测试捞人,待遇给的还不错,感兴趣的可以来试试!


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2025-5-1 18:37 , Processed in 0.707533 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表