物体上挂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 update
void Start()
{
}
// Update is called once per frame
void 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/false
MusicManager.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;
}