Skip to main content

常用组件API

面试题

  1. 获取、增加、删除组件的函数分别是什么?

    获取:GetComponent<T>()

    增加:AddComponent<T>()

    删除:Destroy()

  2. Unity3d的物理引擎中,有几种施加力的方式,分别描述出来。

    rigidbody.AddForce

    rigidbody.AddForceAtPosition

  3. 物体自身旋转使用的函数?

    transform.Rotate()

  4. 物体绕某点旋转使用函数叫什么?

    transform.RotateAround

  5. Unity3d提供了一个用于保存和读取数据的类(PlayerPrefs),请列出保存和读取整形数据的函数

    PlayerPrefs.SetInt()、PlayerPrefs.GetInt()

  6. 如何销毁一个UnityEngine.Object及其子类?

    使用Destroy()方法。

  7. Unity中销毁GameObject的方式,简述Destroy和DestroyImmediate的区别?

    Destroy销毁场景中的物体,但是内存中它还是存在的,只有当内存不够时,机制才会将它销毁并释放内存。

    DestroyImmediate会立即将对象销毁,并且将内存释放。

  8. 退出时调用的函数有哪些?

    OnApplicationQuit:在退出应用程序之前在所有游戏对象上调用此函数。在编辑器中,用户停止播放模式时,调用函数。

    OnDisable:行为被禁用或处于非活动状态时,调用此函数。

  9. 调试记录到控制台的命令是什么?

    Debug.Log();

  10. Mathf.Round、 Mathf.Clamp、 Mathf.Lerp 分别是什么含义?

    • Mathf.Round 四舍五入
    • Mathf.Clamp 限制
    • Mathf.Lerp 插值
  11. 如何让已经存在的GameObject在LoadLevel后不被卸载掉?

void Awake()
{
DontDestroyOnLoad(transform.gameObject);
}
  1. 空间内一物体绕球面固定点(0,1,2)按照固定速度speed环绕运动。
public float Speed = 1;
void Update () {
transform.RotateAround (new Vector3(0,1,2),Vector3.up,Speed);
}
  1. 用代码实现第三角色控制器
public class Player : MonoBehaviour {
public Transform _cameraTrans;
private Vector3 _cameraOffset;
void Awake() {
_cameraOffset = transform.position - _cameraTrans.position;
}
void Update() {
_cameraTrans.position = transform.position - _cameraOffset;
}
}

常用 API

1. Transform组件

Transform是Unity中每个游戏对象的核心组件,它包含了对象的位置(Position)、旋转(Rotation)和缩放(Scale)信息。

  • Position: 一个Vector3类型的变量,表示对象在世界空间中的位置。
  • Rotation: 表示对象的旋转,可以是Quaternion、EulerAngles或Vector3格式。
  • Scale: 一个Vector3类型的变量,表示对象的大小。

2. GameObject类

GameObject是Unity中所有游戏对象的基类。

  • AddComponent<T>(): 为游戏对象添加组件。
  • GetComponent<T>(): 获取游戏对象上的组件。
  • Destroy(Object obj): 销毁游戏对象或组件。

3. Input类

Input类用于处理用户的输入,如键盘、鼠标和游戏手柄等。

  • GetKeyDown(KeyCode key): 检测键盘上的某个键是否被按下。
  • GetMouseButtonDown(int button): 检测鼠标的某个按钮是否被按下。
  • mousePosition: 获取鼠标在屏幕上的位置。

4. Collider和Rigidbody组件

这两个组件通常用于物理模拟。

  • Collider: 用于检测碰撞的基本组件。
  • Rigidbody: 赋予游戏对象物理属性,如质量、阻力等,并使其受物理引擎控制。

5. Camera类

Camera类用于控制摄像机,决定了玩家在游戏中的视角。

  • main: 获取场景中的主摄像机。
  • fieldOfView: 摄像机的视野角度。
  • transform.position: 摄像机的位置。

6. MonoBehaviour类

MonoBehaviour是所有Unity脚本的基类,它包含了一些生命周期方法。

  • Start(): 对象被首次激活时调用。
  • Update(): 每帧调用一次。
  • FixedUpdate(): 用于物理更新的方法,通常用于处理与Rigidbody相关的逻辑。

7. Quaternion类

用于表示3D旋转。

  • Euler(float x, float y, float z): 从欧拉角创建四元数。
  • AngleAxis(float angle, Vector3 axis): 从角度和轴创建四元数。

8. Vector3类

表示3D向量,常用于表示位置、方向和速度等。

  • Normalize(): 将向量标准化为单位向量。
  • Distance(Vector3 a, Vector3 b): 计算两个向量之间的距离。

9. Animation和Animator控制器

用于控制游戏对象的动画。

  • Animation: 旧的动画系统,通过剪辑和动画状态来控制动画。
  • Animator: 新的动画系统,使用Animator Controller和动画状态机来管理动画。

10. UI系统

Unity的UI系统提供了一套用于创建用户界面的组件和API。

  • Button: 按钮组件,可以响应点击事件。
  • Text: 文本组件,用于显示文本。
  • Image: 图像组件,用于显示图片。