
物体上挂OnEnable定时消失 - cs
物体制作成预制体
点击事件触发 - cs
1.物体上挂OnEnable定时消失 - cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class PoolToObject : MonoBehaviour{// OnEnable使用这个对象都时候都走一遍void OnEnable(){Invoke("Push", 1);//定时方法除掉obj}public void Push(){PoolManager.GetInstance().PushObj(this.gameObject.name,this.gameObject);}}
2.点击事件触发 - cs
using System.Collections;using System.Collections.Generic;using UnityEngine;public class PoolTest : MonoBehaviour{// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0)){PoolManager.GetInstance().GetObj("Pool/Cube",(o)=>{});}}}
PoolManager.GetInstance().GetObj("Pool/Cube");//可以不用写后面的方法
一个事件发生了
会导致其他的改变
通过字典记录要做的事情
EventTrigger - 一个事件发生了
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Monster : MonoBehaviour{public int type = 1;public string name = "111";void Start(){Dead();}/// <summary>/// 怪物死亡/// </summary>void Dead(){Debug.Log("怪物死亡");EventCenter.GetInstance().EventTrigger("MonsterDead", this);}}
AddEventListener - 监听这个事件 - 做某事
using System.Collections;using System.Collections.Generic;using UnityEngine;public class Player : MonoBehaviour{void Start(){EventCenter.GetInstance().AddEventListener<Monster>("MonsterDead", MonsterDeadDo);}/// <summary>/// 怪物死亡要做的事/// </summary>/// <param name="info"></param>public void MonsterDeadDo(Monster info){Debug.Log("玩家得到奖励" + (info as Monster).name);}void OnDestroy(){EventCenter.GetInstance().RemoveEventListener<Monster>("MonsterDead", MonsterDeadDo);}}
因为不继承monobehavier
所以没有update
要找一个manager继承
public MusicManager(){MonoManager.GetInstance().AddUpdateListener(Update);// 循环删除播放完的音效}private void Update(){//update方法}
//可能是点击函数private void OnChangeSceneClick(){ScenesManager.GetInstance().LoadScene("TextScene", OnChangeScene);//转场}private void OnChangeScene(){Debug.Log("ChangeSuccess");//转场后做的事情}
同步加载、异步加载
GameObject obj = ResourcesManager.GetInstance().Load<GameObject>("Text/cube");objtransform.localLScale = Vector.one*3;//加载后放大3倍
异步,加载完成后DoSomething
GameObject obj = ResourcesManager.GetInstance().LoadAsync<GameObject>("Text/cube",(obj)=>{objtransform.localLScale = Vector.one*3;//加载后放大3倍});
背景音乐
放在Music/BackMusic文件夹
MusicManager.GetInstance().PlayBackMusic("");//名字
sound音效
放在Music/Sound文件夹
MusicManager.GetInstance().PlaySound("",false);//名字、是否重复true/falseMusicManager.GetInstance().PlaySound("",false,(s)=>{souse=s});//名字、是否重复true/false、播放后做的事情
UIManager.cs
进入场景加载Canvas、EventSystem
动态创建Panel,节省内存
BasePanel.cs
获得Panel的控件
方便写代码
XXPanel.cs拖到XXPanel
XXPanel做成预制体
XXPanel.cs
E_UI_Layer.Mid,DoSomeThing可不写,默认中层、显示后无方法
//失败,显示错误private void LoginFaild(){UIManager.GetInstance().ShowPanel<MessagePanel>("0/MessagePanel",E_UI_Layer.Top, LoginFaildDo);}//失败private void LoginFaildDo(MessagePanel panel){string info = "用户名或密码错误,无法登录,请重新输入!!";panel.ShowMessage(info);Invoke("DelayHide", 1); //延时销毁}//延时销毁private void DelayHide(){UIManager.GetInstance().HidePanel("0/MessagePanel");}
MessagePanel.cs
public void ShowMessage(string msg){text = GetControl<Text>("MessageText").GetComponent<Text>();text.text = msg;}