unity中控制界面控件在脚本中有很多方法
记录下 这个寻路径方法 这种方法稳定 不容易丢失对象
(前提:有NGUI插件)
首先右键创建一个creat- simple texture 通过 prefab tool 拖拽一个背景 再创建一个label 如: 我们的目的是通过脚本改变label的值
如图 我们创建了两个脚本 都放在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);
}
}
完成: