Unity常用脚本按功能分

lcysts
9
2026-06-11
  1. 物体交互与访问

    • Find()/FindWithTag():定位场景物体(避免在Update中使用)。

    • SendMessage():跨脚本调用函数(如触发开门动画)。

    • GetComponent():获取组件实例(如修改灯光强度)。‌‌‌

  2. 物理与运动控制

    • 第一人称控制器:集成CharacterController移动与重力模拟。

    • 子弹发射:Rigidbody.AddForce()实现抛物线运动。

    • 碰撞检测:OnCollisionEnter2D处理命中事件(如扣血逻辑)。‌‌‌

  3. UI与游戏状态管理

    • 游戏结束界面:TimeGameOver.cs控制重载场景和按钮响应。

    • 得分记录:ExHistouryTime.cs保存玩家排名至PlayerPrefs

    • 动画控制:Animation.Play()触发开门/关门动画。‌‌‌

  4. 资源与音效

    • 音频播放:AudioManager.PlayOneShot()实现命中音效。

    • 模型导入:FBX文件单位设置确保尺寸匹配

示例脚本代码

关键场景代码片段(已验证可运行):

  1. 物体访问示例(保存光源引用):

public GameObject light; void Start() { 
light = GameObject.Find("Spotlight"); 
} 

  1. 子弹命中处理(销毁子弹并播放音效):‌‌‌

private void OnCollisionEnter2D(Collision2D collision) { 
AudioManager.instance.AudioPlay(hitClip); Destroy(gameObject); 
}

1.移动(用Translate方法进行移动)

int moveSpeed = 10; //移动速度
this.transform.Translate(Vector3.down * Time.deltaTime * moveSpeed);

 

2. 修改Sprite Renderer的sprite

public Sprite[] sprites; //精灵数组
int frameIndex = 0; // 精灵数组索引

this.GetComponent<SpriteRenderer>().sprite = sprites[frameIndex];

 

2、游戏对象实例化(GameObject.Instantiate),及方法连续调用(InvokeRepeating)

using UnityEngine;
using System.Collections;

public class Gun : MonoBehaviour {

    public float rate = 0.2f ; //子弹发射速率

    public GameObject bullet; //子弹对象,bullet为预制物体

    void Start () {
        OpenFire ();
    }

    void Fire () { //实例化子弹
        GameObject.Instantiate(bullet, this.transform.position, Quaternion.identity);
    }

    void OpenFire () {
        InvokeRepeating("Fire", 1, rate); //重复调用Fire方法,1表示延迟1s后执行
    }
}

 

3、取消连续方法调用(CancelInvoke)

    public void StopFire () {
        CancelInvoke("Fire");
    }

 

4.unity3d中简单实现单例模式的方法(声明一个静态变量_instace,然后在Awake方法中赋值)

using UnityEngine;
using System.Collections;

public class GameManager : MonoBehaviour {

    public static GameManager _instance;

    void Awake () {
        _instance = this;
    }

}

动物装饰