最近使用unity编写代码的时候,发觉顺序不太理解;
先看代码:
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
//不会在此处赋值
public float m_speed;
protected Transform m_transform;
void Start () {
m_transform = this.transform;
Debug.Log("启动了Start m_speed="+m_speed);
m_speed = 8;
Debug.Log("启动了Start m_speed="+m_speed);
}
void Update () {
Debug.Log("启动了Update");
//纵向移动距离
float movev = 0 ;
//水平移动距离
float moveh = 0 ;
//按上键
if(Input.GetKey(KeyCode.UpArrow)){
movev -= (m_speed*Time.deltaTime);
Debug.Log("movev : "+ movev.ToString()+" Time.deltaTime : "+Time.deltaTime+" m_speed="+m_speed);
}
if(Input.GetKey(KeyCode.DownArrow)){
movev +=m_speed*Time.deltaTime;
}
if(Input.GetKey(KeyCode.LeftArrow)){
moveh += m_speed*Time.deltaTime;
}
if(Input.GetKey(KeyCode.RightArrow)){
moveh -= m_speed*Time.deltaTime;
}
//移动
gameObject.transform.Translate(new Vector3(moveh,0,movev));
//gameObject.transform.Translate(new Vector3
//m_transform.Translate(new Vector3(new Vector3(moveh,0,movev)));
}
}
以上所看 m_speed 在类变量中已经赋值了,但在log中start并没有赋值, 所以在类变量中赋值是无效的,但在start中赋值有效,先启动start,再启动update