网站平面设计完成后 与客户怎样沟通,wordpress分类,模板网站建设教程视频,如何做美食网站设计Unity3D 客户端面试题收录#xff08;持续更新~#xff09;
面试题收录
本文收录一些对于 Unity3D 客户端可能遇到的面试题#xff08;持续更新~#xff09;#xff0c;答案仅出于个人理解#xff0c;如有偏差#xff0c;希望指正。
Unity3D
MonoBehaviour 生命周期…Unity3D 客户端面试题收录持续更新~
面试题收录
本文收录一些对于 Unity3D 客户端可能遇到的面试题持续更新~答案仅出于个人理解如有偏差希望指正。
Unity3D
MonoBehaviour 生命周期的各个回调函数
Awake()初始化早于 Start() 调用。Start()依赖其他对象时的初始化。FixedUpdate()每个固定时间步长调用处理物理更新。Update()每帧调用处理大多数游戏逻辑。LateUpdate()每帧调用在 Update() 之后通常用于相机跟随。OnEnable() 和 OnDisable()在组件启用和禁用时调用。OnDestroy()在对象销毁时调用。
Prefab 是什么有何作用
Prefab预制体 是一种存储和复用游戏对象GameObject及其组件的模板。它允许你创建一个游戏对象的原型并可以在场景中反复实例化这个对象。
Unity 常用的资源文件夹有哪些
Resources任何放在 Resources 文件夹中的资源可以通过 Resources.Load() 方法在运行时加载。该文件夹的内容会被 Unity 打包进最终的游戏构建中。StreamingAssets该文件夹用于存放在运行时需要直接访问的文件如视频、配置文件等。在构建时Unity 不会对其内容进行压缩或转换保持原始格式。访问这些文件时需要使用文件路径。Editor该文件夹用于存放编辑器扩展脚本。这些脚本只能在 Unity 编辑器中使用而不会包含在最终的游戏构建中。Plugins用于存放插件如 DLL 文件或第三方库。在 Unity 中放在这个文件夹下的库会被自动识别为插件。
C#
封装、继承、多态三大面向对象特性
封装是将对象的属性和行为封装在一起通过访问控制机制如 private、protected、public 等修饰符来隐藏对象的内部实现细节。外部只能通过公开的方法即公共接口与对象进行交互而不能直接访问对象的内部数据。这种机制提高了代码的安全性和可维护性。
继承是通过定义一个类来基于已有类扩展其功能的能力。通过继承子类可以继承父类的属性和方法并可以重写或扩展这些功能。继承支持代码的复用和逻辑的扩展。
多态允许不同类型的对象以统一的接口进行操作。C# 中的多态性主要体现在方法的重载编译时多态和方法的重写运行时多态。通过多态父类的引用可以指向子类的对象执行子类重写的方法。
重载和重写的区别
重载是一种在同一个类中定义多个同名方法但参数不同。它提供编译时的多态性允许方法在同名的情况下处理不同的输入。
重写是子类通过 override 关键字重新定义父类中的虚方法。它提供运行时的多态性允许子类提供特定的实现取代父类的行为。
委托和事件的区别
委托是 C# 中的一种类型类似于函数指针。它允许将方法作为参数进行传递和调用。通过委托你可以存储对方法的引用并在需要时执行这些方法。
事件是基于委托的封装适用于发布-订阅场景。事件只能在声明它的类内部触发外部类不能直接调用事件只能使用 或 - 进行注册和取消订阅防止了事件的误用。
Lua
pairs 和 ipairs 的区别
pairs 用于遍历所有键值对适用于不规则的表或键为字符串的关联表遍历顺序不固定。
ipairs 用于遍历数组形式的表适用于数值键为连续索引的场合从 1 开始并在遇到第一个 nil 时停止。
如何判断一个 table 为空
在 Lua 中判断一个 table 是否为空并没有内置的函数但可以通过遍历 table 来判断其中是否有任何元素。
一个常见的方法是使用 next() 函数来检查 table 中是否存在任何键值对。
function isTableEmpty(t)return next(t) nil
endnext(t)返回 t 中的第一个键值对。如果 t 中没有任何元素则返回 nil。 注意不能直接通过 #t长度运算符来判断表是否为空因为 #t 只对具有 连续整数键 的数组部分有效。 也不能简单判断 t nil因为要判断的是 table 里面是否有元素而不是 t 变量是否有引用。 if 0 的结果
在 Lua 中只有 false 和 nil 被认为是 假其他所有值包括 0 和空字符串 都被认为是 真。