物体交互与访问
Find()/FindWithTag():定位场景物体(避免在Update中使用)。SendMessage():跨脚本调用函数(如触发开门动画)。GetComponent():获取组件实例(如修改灯光强度)。
物理与运动控制
第一人称控制器:集成
CharacterController移动与重力模拟。子弹发射:
Rigidbody.AddForce()实现抛物线运动。碰撞检测:
OnCollisionEnter2D处理命中事件(如扣血逻辑)。
UI与游戏状态管理
游戏结束界面:
TimeGameOver.cs控制重载场景和按钮响应。得分记录:
ExHistouryTime.cs保存玩家排名至PlayerPrefs。动画控制:
Animation.Play()触发开门/关门动画。
资源与音效
音频播放:
AudioManager.PlayOneShot()实现命中音效。模型导入:FBX文件单位设置确保尺寸匹配
示例脚本代码
关键场景代码片段(已验证可运行):
物体访问示例(保存光源引用):
public GameObject light; void Start() {
light = GameObject.Find("Spotlight");
} 子弹命中处理(销毁子弹并播放音效):
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;
}
}