这个背包实现的是点击背包中的按钮,弹出另一个框。
代码如下:
public class BeiBao : MonoBehaviour {
private Rect daohang=new Rect(0,0,400,60);
private Rect shopRect=new Rect(50,50,500,400);
private Rect bagRect=new Rect(70,50,500,400);
private delegate void Fun();
private Fun shopFun;
private Fun bagFun;
private ArrayList arr;
// Use this for initialization
void Start () {
arr=new ArrayList();
//Console.WriteLine("Delegate an other class's method");
}
// Update is called once per frame
void Update () {
}
void OnGUI(){
daohang=GUI.Window(0,daohang,dragDaoHang,"DaoHang");
foreach(Fun fun in arr){
fun();
}
}
void dragDaoHang(int windowID){
GUILayout.BeginHorizontal(GUILayout.Width(400),GUILayout.Height(60));
if(GUILayout.Button("shop")&&shopFun==null){
Fun fun = (Fun)shop;
arr.Add(fun);
shopFun=fun;
}
if(GUILayout.Button("bag")&&bagFun==null){
Fun fun = (Fun)bag;
arr.Add(fun);
bagFun=fun;
}
GUILayout.EndHorizontal();
GUI.DragWindow(new Rect(0,0,1024,1024));
}
void shop(){
shopRect=GUI.Window(1,shopRect,dragShop,"Market");
}
void bag(){
bagRect=GUI.Window(2,bagRect,dragbag,"bag");
}
void dragShop(int windowID){
if(GUI.Button(new Rect(460,0,40,40),"X")){
arr.RemoveAt(arr.IndexOf(shopFun));
shopFun=null;
}
GUI.DragWindow(new Rect(0,0,1024,1024));
}
void dragbag(int windowID){
if(GUI.Button(new Rect(460,0,40,40),"X")){
arr.RemoveAt(arr.IndexOf(bagFun));
bagFun=null;
}
GUI.DragWindow(new Rect(0,0,1024,1024));
}
}
这里面用到了委托,不是很明白委托的意思。
我的理解是用委托来代替一个方法,声明一个数组,将要实现的功能的在这里是shopFun添加到数组中,这个功能就实现了。例如,点击X页面关闭,如果从数组中删除,那么关闭的功能就实现了。
这个委托我也说不怎么清楚,只是我自己的一些模糊理解,哪边不正确还请各位提出
代码如下:
public class BeiBao : MonoBehaviour {
private Rect daohang=new Rect(0,0,400,60);
private Rect shopRect=new Rect(50,50,500,400);
private Rect bagRect=new Rect(70,50,500,400);
private delegate void Fun();
private Fun shopFun;
private Fun bagFun;
private ArrayList arr;
// Use this for initialization
void Start () {
arr=new ArrayList();
//Console.WriteLine("Delegate an other class's method");
}
// Update is called once per frame
void Update () {
}
void OnGUI(){
daohang=GUI.Window(0,daohang,dragDaoHang,"DaoHang");
foreach(Fun fun in arr){
fun();
}
}
void dragDaoHang(int windowID){
GUILayout.BeginHorizontal(GUILayout.Width(400),GUILayout.Height(60));
if(GUILayout.Button("shop")&&shopFun==null){
Fun fun = (Fun)shop;
arr.Add(fun);
shopFun=fun;
}
if(GUILayout.Button("bag")&&bagFun==null){
Fun fun = (Fun)bag;
arr.Add(fun);
bagFun=fun;
}
GUILayout.EndHorizontal();
GUI.DragWindow(new Rect(0,0,1024,1024));
}
void shop(){
shopRect=GUI.Window(1,shopRect,dragShop,"Market");
}
void bag(){
bagRect=GUI.Window(2,bagRect,dragbag,"bag");
}
void dragShop(int windowID){
if(GUI.Button(new Rect(460,0,40,40),"X")){
arr.RemoveAt(arr.IndexOf(shopFun));
shopFun=null;
}
GUI.DragWindow(new Rect(0,0,1024,1024));
}
void dragbag(int windowID){
if(GUI.Button(new Rect(460,0,40,40),"X")){
arr.RemoveAt(arr.IndexOf(bagFun));
bagFun=null;
}
GUI.DragWindow(new Rect(0,0,1024,1024));
}
}
这里面用到了委托,不是很明白委托的意思。
我的理解是用委托来代替一个方法,声明一个数组,将要实现的功能的在这里是shopFun添加到数组中,这个功能就实现了。例如,点击X页面关闭,如果从数组中删除,那么关闭的功能就实现了。
这个委托我也说不怎么清楚,只是我自己的一些模糊理解,哪边不正确还请各位提出