unity C# NGUI控件寻路径方法

unity中控制界面控件在脚本中有很多方法 

记录下 这个寻路径方法  这种方法稳定 不容易丢失对象


(前提:有NGUI插件)


首先右键创建一个creat- simple texture  通过 prefab tool 拖拽一个背景 再创建一个label 如:  我们的目的是通过脚本改变label的值unity C# NGUI控件寻路径方法_第1张图片


如图 我们创建了两个脚本 都放在Control-Background上,接下来,便是重要的部分了。theTest的代码如下;

 

 using UnityEngine;
using System.Collections;

public class theTest : MonoBehaviour {

	private UILabel namelabel;          //先私有声明NGUI中的控件类型

	
	void Awake(){                        //创建awake函数
		namelabel=transform.Find("Label").GetComponent();     //寻址找到控件,如果找其子类,应加/ 如“label/labei1”
		playerInfo ._instance.OnPlayerInfoChanged += this.OnPlayerInfoChanged;    //新增实例
	}

	
	void OnDestroy() {                                                             //销毁实例,节省空间
		playerInfo._instance.OnPlayerInfoChanged -= this.OnPlayerInfoChanged;       
	}
	
	void OnPlayerInfoChanged(InfoType type){                                        
		if(type==InfoType.Name){                                     
			UpdateShow();
		}
	}

	void UpdateShow(){                                             //显示改变
		playerInfo info = playerInfo._instance;
		namelabel.text = info.Name.ToString ();
	}
}

PlayerInfo的代码:
using UnityEngine;
using System.Collections;

public enum InfoType{                                 //声明枚举
	Name,                                   
}

public class playerInfo : MonoBehaviour {
	public static playerInfo _instance;                          //创建实例

	private string _name;                                           //声明名字

	public delegate void OnPlayerInfoChangedEvent(InfoType type);  //创建委托
	public event OnPlayerInfoChangedEvent OnPlayerInfoChanged;     

	public string Name{
		get{
			return _name;
		}
		set {
			_name=value;
		}

	}

	void Awake(){
		_instance = this;
	}

	void Start(){
		Init ();
	}

	void Init(){
		this.Name= "hahaha";
		OnPlayerInfoChanged (InfoType.Name);
	}
}
 


完成: unity C# NGUI控件寻路径方法_第2张图片

你可能感兴趣的:(unity,unity,ngui,脚本)