9. 如何在Unity中加载和切换场景?
可以使用SceneManager加载场景:
加载场景:SceneManager.LoadScene("SceneName");
异步加载:SceneManager.LoadSceneAsync("SceneName");
需要添加命名空间:
csharp
复制代码
using UnityEngine.SceneManagement;
10. 什么是Canvas?Canvas的渲染模式有哪些?
Canvas是Unity中用于管理UI元素的组件。
渲染模式:Screen Space - Overlay:UI始终覆盖屏幕,渲染在最前面。
Screen Space - Camera:UI依赖于特定的摄像机,支持深度调整。
World Space:UI作为3D对象渲染在世界中,适合3D交互场景。
11. Unity中的光照类型有哪些?它们的区别是什么?
Directional Light(方向光):模拟太阳光,光线方向平行,影响整个场景。
Point Light(点光源):模拟灯泡,光线从中心点向四周发散。
Spot Light(聚光灯):光线呈锥形,适合手电筒或舞台灯光效果。
Area Light(区域光):从矩形区域均匀发射光线,仅支持烘焙光照。
17. 什么是对象池(Object Pooling),它如何提升性能?
对象池是一种复用对象的技术,适用于频繁创建和销毁对象的场景(例如子弹、特效)。通过预先创建对象并重复使用,可以减少GC开销,提升性能。
代码示例:
csharp
复制代码
public class ObjectPool : MonoBehaviour
{
public GameObject prefab;
private Queue<GameObject> pool = new Queue<GameObject>();
public GameObject GetObject()
{
if (pool.Count > 0)
{
GameObject obj = pool.Dequeue();
obj.SetActive(true);
return obj;
}
return Instantiate(prefab);
}
public void ReturnObject(GameObject obj)
{
obj.SetActive(false);
pool.Enqueue(obj);
}
}