回调方法
/*
* 如果脚本组件加到游戏物体上,脚本一定要继承自MonoBehaviour
*/
public class ControlMusic : MonoBehaviour {
// 回调方法:达到一定的条件后,能够自动执行的方法称为回调方法
// 回调方法只有写出来以后,才会运行
//唤醒脚本,即使脚本不处于激活状态,该方法仍然执行
//该方法只执行一次
private void Awake()
{
Debug.Log("Awake");
}
//脚本是否能用,该方法可以执行多次,每把脚本激活一次,
//方法执行一次
private void OnEnable()
{
Debug.Log("onEnable");
}
//只执行一次,在脚本里面通常使用Awake和Start给脚本中的字段赋初始值
private void Start()
{
Debug.Log("Start");
}
//按固定帧速率重复执行,他的执行频率和固定时间间隔有关
private void FixedUpdate()
{
//有关物理引擎的代码放在该方法里面
Debug.Log("FixedUpdate");
}
private void Update()
{
//每一帧都要运行的代码放在该方法里面
Debug.Log("Update");
}
private void LateUpdate()
{
//有关摄像机的相关代码放在该方法里面
Debug.Log("LateUpdate");
}
//当脚本由激活状态到不激活状态调用该方法
private void OnDisable()
{
Debug.Log("OnDisable");
}
//当脚本组件销毁时调用
private void OnDestroy()
{
Debug.Log("OnDestroy");
}
GameObject
/*
* 解决问题的大致流程:
* 1.先得到游戏物体
* 2.再得到游戏物体上的组件对象
* 3.通过组件对象调用属性和方法
*/
public class Part03 : MonoBehaviour {
public GameObject sphere;
void Start () {
name = "Hero";
//gameObject 指的是脚本所在的游戏物体
gameObject.isStatic = true;
//得到游戏所在游戏物体的其他组件对象
GetComponent<BoxCollider>().isTrigger = true;
//以下的代码是找其他的游戏物体,进而更改其相关数据
//在场景中找到一个指定名字一样的游戏物体,如果游戏物体是隐藏的,通过名字或者tag值是找不到该游戏物体的
//sphere = GameObject.Find("Sphere");
//给游戏物体赋值tag值
//sphere.tag = "Player";
//通过tag值找到游戏物体
//sphere = GameObject.FindWithTag("Player");
//sphere.name = "Enemy";
//sphere.isStatic=true;
//设置物体是否可见
//sphere.SetActive(false);
//Debug.Log(sphere.name);
//得到小球上的SphereCollider组件对象
sphere.GetComponent<SphereCollider>().isTrigger = true;
//得到和tag值相同的所有游戏物体
GameObject[] objs = GameObject.FindGameObjectsWithTag("Player");
foreach (var item in objs)
{
Destroy(item,3);
}
Debug.Log(objs.Length);
}
// Update is called once per frame
void Update () {
}
}
Transform常用的
public class part04 : MonoBehaviour {
public Transform sphere;
void Start () {
//使用transform 来代替 GetComponent<Transform>()
//Debug.Log(transform.position);
//更改游戏物体的世界坐标
//transform.position = new Vector3(2, 2, 2);
//物体的本地坐标
//Debug.Log(transform.localPosition);
//得到选择的欧拉角,他是一个Vector3类型
//transform.eulerAngles = new Vector3(0, 45, 0);
//Debug.Log(transform.eulerAngles);
//rotation的返回值是一个四元数
//Debug.Log(transform.rotation);
//设置物体的父物体
//transform.parent = sphere;
//得到游戏物体最外层的父物体
//Debug.Log(transform.root.name);
//移动一定的向量
//transform.Translate(sphere.position - transform.position);
//通过名字找到最近一层的子物体
//Transform t= transform.Find("Sphere");
//Debug.Log(t.tag);
//Transform t =transform.GetChild(0).GetChild(0);
通过路径找到子物体
//t = transform.Find("Capsule/Sphere");
//Debug.Log(t.name);
//看向游戏物体
}
void Update () {
//乘以Time.deltaTime表示1秒钟指定的向量,如果不乘,表示1帧移动
//指定的向量,物体默认沿本地坐标移动,Space.World沿世界坐标移动
//transform.Translate(new Vector3(1, 0, 0)*Time.deltaTime*3,Space.World);
//物体旋转
//transform.Rotate(new Vector3(0, 10, 0),Space.World);
//transform.RotateAround(sphere.position, -sphere.right, 10);
transform.LookAt(sphere);
}
}