微信登录

框架使用

Base(主不继承MonoBehaviour) - BaseManager.cs

Pool (缓存池) - PoolManager.cs

物体上挂OnEnable定时消失 - cs
物体制作成预制体
点击事件触发 - cs

1.物体上挂OnEnable定时消失 - cs

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PoolToObject : MonoBehaviour
  5. {
  6. // OnEnable使用这个对象都时候都走一遍
  7. void OnEnable()
  8. {
  9. Invoke("Push", 1);//定时方法除掉obj
  10. }
  11. public void Push()
  12. {
  13. PoolManager.GetInstance().PushObj(this.gameObject.name,this.gameObject);
  14. }
  15. }

2.点击事件触发 - cs

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class PoolTest : MonoBehaviour
  5. {
  6. // Start is called before the first frame update
  7. void Start()
  8. {
  9. }
  10. // Update is called once per frame
  11. void Update()
  12. {
  13. if (Input.GetMouseButtonDown(0))
  14. {
  15. PoolManager.GetInstance().GetObj("Pool/Cube",(o)=>
  16. {
  17. });
  18. }
  19. }
  20. }
  1. PoolManager.GetInstance().GetObj("Pool/Cube");//可以不用写后面的方法

Event(事件中心) - EventCenter.cs

一个事件发生了
会导致其他的改变
通过字典记录要做的事情

EventTrigger - 一个事件发生了

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Monster : MonoBehaviour
  5. {
  6. public int type = 1;
  7. public string name = "111";
  8. void Start()
  9. {
  10. Dead();
  11. }
  12. /// <summary>
  13. /// 怪物死亡
  14. /// </summary>
  15. void Dead()
  16. {
  17. Debug.Log("怪物死亡");
  18. EventCenter.GetInstance().EventTrigger("MonsterDead", this);
  19. }
  20. }

AddEventListener - 监听这个事件 - 做某事

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Player : MonoBehaviour
  5. {
  6. void Start()
  7. {
  8. EventCenter.GetInstance().AddEventListener<Monster>("MonsterDead", MonsterDeadDo);
  9. }
  10. /// <summary>
  11. /// 怪物死亡要做的事
  12. /// </summary>
  13. /// <param name="info"></param>
  14. public void MonsterDeadDo(Monster info)
  15. {
  16. Debug.Log("玩家得到奖励" + (info as Monster).name);
  17. }
  18. void OnDestroy()
  19. {
  20. EventCenter.GetInstance().RemoveEventListener<Monster>("MonsterDead", MonsterDeadDo);
  21. }
  22. }

Mono(unity的update函数) - MonoController.cs(继承Mono) + MonoManager.cs

因为不继承monobehavier
所以没有update
要找一个manager继承

  1. public MusicManager()
  2. {
  3. MonoManager.GetInstance().AddUpdateListener(Update);// 循环删除播放完的音效
  4. }
  5. private void Update()
  6. {
  7. //update方法
  8. }

Scenes(场景模块) - ScenesManager.cs

  1. //可能是点击函数
  2. private void OnChangeSceneClick()
  3. {
  4. ScenesManager.GetInstance().LoadScene("TextScene", OnChangeScene);//转场
  5. }
  6. private void OnChangeScene()
  7. {
  8. Debug.Log("ChangeSuccess");//转场后做的事情
  9. }

Resources(资源管理模块) - ResourcesManager.cs

同步加载、异步加载

  1. GameObject obj = ResourcesManager.GetInstance().Load<GameObject>("Text/cube");
  2. objtransform.localLScale = Vector.one*3;//加载后放大3倍

异步,加载完成后DoSomething

  1. GameObject obj = ResourcesManager.GetInstance().LoadAsync<GameObject>("Text/cube",(obj)=>{
  2. objtransform.localLScale = Vector.one*3;//加载后放大3倍
  3. });

Music(音效) - MusicManager.cs

背景音乐
放在Music/BackMusic文件夹

  1. MusicManager.GetInstance().PlayBackMusic("");//名字

sound音效
放在Music/Sound文件夹

  1. MusicManager.GetInstance().PlaySound("",false);//名字、是否重复true/false
  2. MusicManager.GetInstance().PlaySound("",false,(s)=>{souse=s});//名字、是否重复true/false、播放后做的事情

UI(UI模块) - UIManager.cs + BasePanel.cs

UIManager.cs
进入场景加载Canvas、EventSystem
动态创建Panel,节省内存

BasePanel.cs
获得Panel的控件
方便写代码

XXPanel.cs拖到XXPanel
XXPanel做成预制体
XXPanel.cs

E_UI_Layer.Mid,DoSomeThing可不写,默认中层、显示后无方法

  1. //失败,显示错误
  2. private void LoginFaild()
  3. {
  4. UIManager.GetInstance().ShowPanel<MessagePanel>("0/MessagePanel",E_UI_Layer.Top, LoginFaildDo);
  5. }
  6. //失败
  7. private void LoginFaildDo(MessagePanel panel)
  8. {
  9. string info = "用户名或密码错误,无法登录,请重新输入!!";
  10. panel.ShowMessage(info);
  11. Invoke("DelayHide", 1); //延时销毁
  12. }
  13. //延时销毁
  14. private void DelayHide()
  15. {
  16. UIManager.GetInstance().HidePanel("0/MessagePanel");
  17. }

MessagePanel.cs

  1. public void ShowMessage(string msg)
  2. {
  3. text = GetControl<Text>("MessageText").GetComponent<Text>();
  4. text.text = msg;
  5. }
框架使用