Unity C# 脚本常用代码
坐标位置相关
加载相关
UI操作相关
数学相关
编辑器相关
坐标相关
定位、旋转、缩放
# 设置到指定位置
transform.position = new Vector3(30, 0, 0)
# 在当前位置上在增加偏移(通常写在 Update 里, 并乘以 Time.deltaTime)
transform.Translate(2 * Time.deltaTime, 0, 0)
# 设置到指定旋转角度
transform.eulerAngles = new Vector3(30, 0, 0)
# 在当前角度上在增加角度(通常写在 Update 里, 并乘以 Time.deltaTime)
transform.Rotate(0, 2 * Time.deltaTime, 0)
# 缩放
transform.localScale = new Vector3(3, 3, 3)
游戏对象查找
# 通过名称查找
GameObject player = GameObject.Find("player");
# 通过 Tag 查找
GameObject player = GameObject.FindWithTag("player_tag");
世界坐标转屏幕坐标
// target 为物体对象(GameObject).
Camera.main.WorldToScreenPoint(target.gameObject.transform.position);
使用射线检测点击模型
private RaycastHit hit;
void Update() {
if (Input.GetMouseButtonDown(0)) {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// 使用 Physics.Raycast 时请确保模型包含碰撞体( collider ) 不然无法被检测.
if (Physics.Raycast(ray, out hit)) {
GameObject obj = hit.collider.gameObject;
if (obj.tag.Equals("Player")) {
//判断 obj 的 Tag 是否为玩家.
}
}
}
}
获取鼠标所在的世界坐标
Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position);
Vector3 mousePosOnScreen = Input.mousePosition;
mousePosOnScreen.z = screenPos.z;
Vector3 vec = Camera.main.ScreenToWorldPoint(mousePosOnScreen);
加载相关
加载预制体
GameObject obj_1 = (GameObject)Resources.Load("Prefab/O_obj_1");
GameObject obj_2 = (GameObject)Resources.Load("Prefab/O_obj_2");
// 加载血条蓝条UI.
GameObject hpMpPanel = (GameObject)Resources.Load("Prefab/Hp_Mp_Panel");
// 实例化预制体.
GameObject hpMpPanelObj = GameObject.Instantiate(hpMpPanel);
UI操作相关
修改UI大小、位置等
// btn 为UI对象 (GameObject)
RectTransform rect = btn.GetComponent<RectTransform>();
// 设置位置
rect.anchoredPosition = new Vector3(100, 100, 0);
// 设置大小
rect.sizeDelta = new Vector2(145, 200);
Text获取文字所占宽度
GameObject obj = this.transform.Find("Text").gameObject;
Text text = obj.GetComponent<Text>();
// 获取文本所占宽度.
float textContentWidth = text.preferredWidth;
数学相关
随机数
# 创建 0-100 int 类型的随机数 (最小值为 0, 最大值为 100)
int r = Random.Range(0, 100)
# 创建 0-1 float 类型的随机数 (最小值为 0, 最大值为 1)
float r = Random.Range(0.0f, 1.0f)
Mathf
# 返回限制值, 限制 参数1 小于 参数2 时返回 参数2, 大于 参数3 时返回 参数3, 其他情况这返回 参数1
int a = Mathf.Clamp(10, 2, 5); # 满足大于 参数3 条件, 返回 参数3 结果为: 5
int a = Mathf.Clamp(3, 2, 5); # 满足其他情况, 返回 参数1 结果为: 3
编辑器相关
禁用动画位移
Animator 组件上 去掉 Apply Root Motion 选项