PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为日更。
笔记内容均为 自己理解,不保证每个都对
Part 1 InputField:文本输入框
创建后的文本包括:
文本输入框属性:
输入框文本规范:
例如:文本规范为密码,则显示效果为
获得输入内容的方式:
//结束编辑后获取
InputField input = gameObject.GetComponent<InputField>();
input.onEndEdit.AddListener((x) => {
Debug.Log("name == " + gameObject.transform.name + "Key == " + x);
});
//其他 获取情况 更改 onEndEdit方法即可
// Addlistener(方法) 方法可另外写,也可用Lamda表达式写
Part 2 DropDown下拉框:
Item:
后面每一个选项 都从这 复制 :
指定 选项的图片 和文字:
添加 或者删除 选项:
获得下拉框选项值的方法:
void Start()
{
for (int i = 0; i < transform.childCount; i++)
{
Dropdown tmp = transform.GetChild(i).GetComponent<Dropdown>();
/// 记录 当前第几个孩子
int tmpIndex = i;
tmp.onValueChanged.AddListener((index) => {
Debug.Log("i==" + tmpIndex);
Debug.Log("index ==" + index);
});
}
}
Part 3 页面UI跳转 MVC:
已主菜单跳转登录界面为例:
其他界面跳转同理
MVCGenControl:存储界面是否已经生成
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MVCGenControl : MonoBehaviour
{
// Start is called before the first frame update
GameObject LoginObj = null; //纪录登陆界面是否生成
GameObject RewardsObj = null; //记录奖杯界面是否生成
GameObject StoreObj = null; //记录商店界面是否生成
GameObject SettingObj = null; //记录设置界面是否生成
GameObject MailObj = null; //记录邮件界面是否生成
GameObject RegistObj = null; //记录注册界面是否生成
GameObject MenuObj = null; //记录菜单界面是否生成
public GameObject GetLogin
{
get
{
return LoginObj;
}
set
{
LoginObj = value;
}
}
public GameObject GetRewards
{
get
{
return RewardsObj;
}
set
{
RewardsObj = value;
}
}
public GameObject GetStore
{
get
{
return StoreObj;
}
set
{
StoreObj = value;
}
}
public GameObject GetSetting
{
get
{
return SettingObj;
}
set
{
SettingObj = value;
}
}
public GameObject GetMail
{
get
{
return MailObj;
}
set
{
MailObj = value;
}
}
public GameObject GetRegist
{
get
{
return RegistObj;
}
set
{
RegistObj = value;
}
}
public GameObject GetMenu
{
get
{
return MenuObj;
}
set
{
MenuObj = value;
}
}
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
MVCMenuTest:主菜单脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class StartTestM
{
}
public class StartTestC
{
StartTestM stm;
Transform root;
MVCGenControl GCL;
public StartTestC(StartTestM stm, Transform root) //实例化逻辑层
{
this.stm = stm;
this.root = root;
GCL = root.root.Find("GenControl").GetComponent<MVCGenControl>(); //获得记录信息
}
public void ShowOrHide(bool isShow) //显示与隐藏
{
root.gameObject.SetActive(isShow);
}
public void PlayBtnClicked() //开始按钮被按下
{
if (GCL.GetLogin == null) //登陆界面未生成
{
Object tmp = Resources.Load("Login"); //加载登录界面
GCL.GetLogin = GameObject.Instantiate(tmp) as GameObject; //实例化界面
GameObject Canvas = GameObject.FindGameObjectWithTag("MainCanvas"); //获得主画布信息
GCL.GetLogin.transform.SetParent(Canvas.transform, false); //设置父类
GCL.GetLogin.AddComponent<MVCLoginTest>(); //动态添加脚本
}
MVCLoginTest MLT = GCL.GetLogin.GetComponent<MVCLoginTest>(); //访问登录界面的脚本
MLT.ShowOrHidden(true); //显示登录界面
ShowOrHide(false); //隐藏当前界面
}
public void SettingBtnClicked() //设置按钮被按下 以下内容同上
{
if(GCL.GetSetting == null)
{
Debug.Log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
Object tmp = Resources.Load("Setting");
GCL.GetSetting = GameObject.Instantiate(tmp) as GameObject;
GameObject Canvas = GameObject.FindGameObjectWithTag("MainCanvas");
GCL.GetSetting.transform.SetParent(Canvas.transform, false);
GCL.GetSetting.AddComponent<MVCSettingTest>();
}
MVCSettingTest MST = GCL.GetSetting.GetComponent<MVCSettingTest>();
MST.ShowOrHidden(true);
ShowOrHide(false);
}
}
public class MVCStartTest : MonoBehaviour
{
public StartTestM STM;
public StartTestC STC;
public void ShowOrHidden(bool isShow)
{
STC.ShowOrHide(isShow);
}
// Start is called before the first frame update
void Start()
{
STM = new StartTestM();
STC = new StartTestC(STM, transform);
Transform Play = transform.Find("Buttons/Play");
Button playBtn = Play.GetComponent<Button>();
playBtn.onClick.AddListener(STC.PlayBtnClicked); //调用 开始按钮被按下的方法
Transform Setting = transform.Find("Buttons/Setting");
Button settingBtn = Setting.GetComponent<Button>();
settingBtn.onClick.AddListener(STC.SettingBtnClicked); //调用 设置按钮被按下的方法
}
// Update is called once per frame
void Update()
{
}
}
MVCLoginTest:登录界面脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TestM
{
public string userName;
public string passWord;
}
public class TestC
{
TestM tmpM;
Transform root;
MVCGenControl GCL;
public TestC(TestM tmpM, Transform root)
{
this.tmpM = tmpM;
this.root = root;
GCL = root.root.Find("GenControl").GetComponent<MVCGenControl>();
}
public void OnUserEndEdit(string UserName) //保存用户信息
{
tmpM.userName = UserName;
Debug.Log("MVC UserName == " + tmpM.userName);
}
public void OnPassEndEdit(string passWord) //保存密码
{
tmpM.passWord = passWord;
Debug.Log("MVC PassWord == " + tmpM.passWord);
}
public void ShowOrHidden(bool isShow) //显示与隐藏
{
Debug.Log("root name == " + root.transform.name);
root.gameObject.SetActive(isShow);
}
public void RegistBtnClicked() //注册按钮被按下
{
//Debug.Log("RegistObj == " + registObj);
if(GCL.GetRegist == null) //判断regist界面是否生成过
{
//Debug.Log("123456789");
Object tmp = Resources.Load("Regist"); //加载注册界面
GCL.GetRegist = GameObject.Instantiate(tmp) as GameObject; //实例化界面
GameObject Canvas = GameObject.FindGameObjectWithTag("MainCanvas"); //获得主画布信息
GCL.GetRegist.transform.SetParent(Canvas.transform, false); //将实例化后的UI设为Canvas的子类
GCL.GetRegist.AddComponent<MVCRegisterTest>(); //动态添加脚本
Debug.Log("registObj Name == " + GCL.GetRegist.transform.name);
}
Debug.Log("================================");
GCL.GetRegist.GetComponent<MVCRegisterTest>().ShowOrHidden(true); //注册界面显示
ShowOrHidden(false); //登录界面隐藏
}
public void LoginBtnClicked() //登录按钮被按下 以下内容同上
{
//Debug.Log("RegistObj == " + registObj);
if (GCL.GetMenu == null) //判断regist界面是否生成过
{
//Debug.Log("123456789");
Object tmp = Resources.Load("Menu");
GCL.GetMenu = GameObject.Instantiate(tmp) as GameObject;
GameObject Canvas = GameObject.FindGameObjectWithTag("MainCanvas");
GCL.GetMenu.transform.SetParent(Canvas.transform, false); //将实例化后的UI设为Canvas的子类
GCL.GetMenu.AddComponent<MVCMenuTest>();
//Debug.Log("registObj Name == " + GCL.GetMenu.transform.name);
}
Debug.Log("================================");
GCL.GetMenu.GetComponent<MVCMenuTest>().ShowOrHidden(true);
ShowOrHidden(false);
}
}
public class MVCLoginTest : MonoBehaviour
{
TestM loadingM;
TestC eventLogic;
public void ShowOrHidden(bool isShow) //显示与隐藏
{
Start();
Debug.Log("Login isShow == " + isShow);
eventLogic.ShowOrHidden(isShow);
}
// Start is called before the first frame update
void Start()
{
Debug.Log("MVC START SUCCESS!!!");
loadingM = new TestM();
//Transform root = transform.Find(transform.name);
eventLogic = new TestC(loadingM, transform);
//Debug.Log("transform name == " + root.name);
Transform userField = transform.Find("InputField/UserNameField");
InputField input = userField.GetComponent<InputField>();
input.onEndEdit.AddListener(eventLogic.OnUserEndEdit); //调用用户名输入结束方法
Transform passWordField = transform.Find("InputField/PassWordField");
InputField passWord = passWordField.GetComponent<InputField>();
passWord.onEndEdit.AddListener(eventLogic.OnPassEndEdit); //调用密码输入结束方法
Transform btn = transform.Find("Buttons/RegistBtn");
Button registBtn = btn.GetComponent<Button>();
registBtn.onClick.AddListener(eventLogic.RegistBtnClicked); //调用注册按钮被按下方法
btn = transform.Find("Buttons/LoginBtn");
Button LoginBtn = btn.GetComponent<Button>();
LoginBtn.onClick.AddListener(eventLogic.LoginBtnClicked); //调用登录按钮被按下方法
}
// Update is called once per frame
void Update()
{
}
}