4.MVC框架-不使用MVC框架-主面板
4.1 知识点
创建主面板脚本,继承 MonoBehaviour,挂载到面板预制体上
public class MainPanel : MonoBehaviour
{
}
定义控件变量外部关联
// 获得控件
public Text txtName;
public Text txtLev;
public Text txtMoney;
public Text txtGem;
public Text txtPower;
public Button btnRole;
对控件添加事件监听
void Start()
{
// 添加事件
// btnRole.onClick.AddListener(ClickBtnRole);
btnRole.onClick.AddListener(() =>
{
// 打开角色面板的逻辑
Debug.Log("按钮点击");
// 显示角色面板
RolePanel.ShowMe();
});
}
private void ClickBtnRole()
{
// 打开角色面板的逻辑
// 显示角色面板
RolePanel.ShowMe();
}
更新面板信息
// 更新信息
public void UpdateInfo()
{
// 获取玩家数据 更新玩家信息
// 获取玩家数据的方式 1.网络请求 2.json 3.xml 4.2进制 5.PlayerPrefs公共类
// 通过 PlayerPrefs 来获取本地存储的玩家信息 更新到界面上
txtName.text = PlayerPrefs.GetString("PlayerName", "韬老狮");
txtLev.text = "LV." + PlayerPrefs.GetInt("PlayerLev", 1).ToString();
txtMoney.text = PlayerPrefs.GetInt("PlayerMoney", 999).ToString();
txtGem.text = PlayerPrefs.GetInt("PlayerGem", 888).ToString();
txtPower.text = PlayerPrefs.GetInt("PlayerPower", 10).ToString();
}
面板设置成单例,显示隐藏面板
private static MainPanel panel;
public static MainPanel Panel
{
get
{
return panel;
}
}
// 动态显隐
public static void ShowMe()
{
if(panel == null)
{
// 实例化面板对象
GameObject res = Resources.Load<GameObject>("BaseFramework/UI/UGUI/Normal/MainPanel");
GameObject obj = Instantiate(res);
// 设置它的父对象 为 Canvas
obj.transform.SetParent(GameObject.Find("Canvas").transform, false);
panel = obj.GetComponent<MainPanel>();
}
// 如果是隐藏的形式 hide 在这要显示
panel.gameObject.SetActive(true);
// 显示完面板 更新该面板的信息
panel.UpdateInfo();
}
public static void HideMe()
{
if(panel != null)
{
// 方式一 直接删
// Destroy(panel.gameObject);
// panel = null;
// 方式二 设置可见为隐藏
panel.gameObject.SetActive(false);
}
}
主入口脚本控制显示隐藏主面板
public class NormalMain : MonoBehaviour
{
void Update()
{
if(Input.GetKeyDown(KeyCode.M))
{
// 显示主面板
MainPanel.ShowMe();
}
else if(Input.GetKeyDown(KeyCode.N))
{
// 隐藏主面板
MainPanel.HideMe();
}
}
}
4.2 知识点代码
MainPanel
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//1.创建脚本
public class MainPanel : MonoBehaviour
{
//2.获得控件
public Text txtName;
public Text txtLev;
public Text txtMoney;
public Text txtGem;
public Text txtPower;
public Button btnRole;
private static MainPanel panel;
public static MainPanel Panel
{
get
{
return panel;
}
}
//4.动态显隐
public static void ShowMe()
{
if(panel == null)
{
//实例化面板对象
GameObject res = Resources.Load<GameObject>("BaseFramework/UI/UGUI/Normal/MainPanel");
GameObject obj = Instantiate(res);
//设置它的父对象 为Canvas
obj.transform.SetParent(GameObject.Find("Canvas").transform, false);
panel = obj.GetComponent<MainPanel>();
}
//如果是隐藏的形式hide 在这要显示
panel.gameObject.SetActive(true);
//显示完面板 更新该面板的信息
panel.UpdateInfo();
}
public static void HideMe()
{
if(panel != null)
{
//方式一 直接删
//Destroy(panel.gameObject);
//panel = null;
//方式二 设置可见为隐藏
panel.gameObject.SetActive(false);
}
}
void Start()
{
//3.添加事件
//btnRole.onClick.AddListener(ClickBtnRole);
btnRole.onClick.AddListener(() =>
{
//打开角色面板的逻辑
Debug.Log("按钮点击");
//显示角色面板
RolePanel.ShowMe();
});
}
private void ClickBtnRole()
{
//打开角色面板的逻辑
//显示角色面板
RolePanel.ShowMe();
}
//4.更新信息
public void UpdateInfo()
{
//获取玩家数据 更新玩家信息
//获取玩家数据的方式 1.网络请求 2.json 3.xml 4.2进制 5.PlayerPrefs公共类
//通过PlayerPrefs来获取本地存储的玩家信息 更新到界面上
txtName.text = PlayerPrefs.GetString("PlayerName", "韬老狮");
txtLev.text = "LV." + PlayerPrefs.GetInt("PlayerLev", 1).ToString();
txtMoney.text = PlayerPrefs.GetInt("PlayerMoney", 999).ToString();
txtGem.text = PlayerPrefs.GetInt("PlayerGem", 888).ToString();
txtPower.text = PlayerPrefs.GetInt("PlayerPower", 10).ToString();
}
}
NormalMain
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NormalMain : MonoBehaviour
{
void Update()
{
if( Input.GetKeyDown(KeyCode.M) )
{
//显示主面板
MainPanel.ShowMe();
}
else if( Input.GetKeyDown(KeyCode.N) )
{
//隐藏主面板
MainPanel.HideMe();
}
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com