Unity启动研究 关于 类变量,start函数,update函数

探讨在Unity中编写代码时,变量赋值顺序的疑惑,并通过实例演示了类变量赋值时机的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

          最近使用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)));
			
			
		
		
	
	}
}


 再看log :

    

   

  以上所看  m_speed 在类变量中已经赋值了,但在log中start并没有赋值, 所以在类变量中赋值是无效的,但在start中赋值有效,先启动start,再启动update



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值