首先大家來(lái)了解下PlayerPrefs:
適用設(shè)備:Mac OSX悯嗓、Linux纺腊、Windows利职、Web player
存儲(chǔ)機(jī)制:Key-Value
可存儲(chǔ)變量類型:int滔灶,float,string
靜態(tài)方法:setFloat :存儲(chǔ)float類型的數(shù)據(jù)
setInt:存儲(chǔ)int類型的數(shù)據(jù)
setString:存儲(chǔ)string類型的數(shù)據(jù)
Deleteall:刪除所有數(shù)據(jù)
getFloat:通過(guò)key值獲取float類型的數(shù)據(jù)
getInt:通過(guò)key值獲取int類型的數(shù)據(jù)
getString:通過(guò)key值獲取String類型的數(shù)據(jù)
HasKey:判斷是否在該key值得數(shù)據(jù)
現(xiàn)在開始給大家做demo來(lái)演示單機(jī)版的登錄界面功能
1首先建立三個(gè)場(chǎng)景员魏,命名為Scene1和Scene2和Scene3
2在Scene1中建立登錄界面丑蛤,先建立一個(gè)Plane命名為BG,然后建立2個(gè)InputFile撕阎,分別改名為Account和Password 受裹,Account作為輸入賬號(hào),Password作為輸入密碼闻书,然后建立倆個(gè)Button名斟,將倆個(gè)Button改名為L(zhǎng)ogin和Register,一個(gè)是登錄按鈕魄眉,一個(gè)是注冊(cè)按鈕砰盐,然后讓大家看下效果圖,
大概就是這個(gè)效果坑律,由于自己太懶岩梳,就沒找素材,大家將就著看吧晃择,我相信大家可以領(lǐng)悟到其中的精髓
3然后在Scene2中建立和Scene1中一樣的界面冀值,(你可以把Scene1中的Canvas做成預(yù)設(shè)體,然后打開Scnene2場(chǎng)景宫屠,將預(yù)設(shè)體直接拖進(jìn)去列疗,這樣是不很簡(jiǎn)單!@缩濉)但是你要把登錄和注冊(cè)按鈕上的Text改下? 抵栈,直接上圖
這樣場(chǎng)景就搭建完了告材,下面進(jìn)入我們枯燥的腳本環(huán)節(jié)
將該腳本賦給場(chǎng)景Scene1下的BG,由于本人喜歡用鼠標(biāo)點(diǎn)擊事件古劲,所以大家記得把Button都加上點(diǎn)擊事件呦斥赋!
添加場(chǎng)景命名空間和UI的命名空間
//賬號(hào)InputField? Account;
//密碼InputField? PassWord;
//登陸按鈕Button Bit_Lagin;
//注冊(cè)按鈕Button Bit_Register;
//public GameObject? Plane1;
public GameObject Plane2;
void? Awake(){Account = transform .FindChild ("Account").GetComponent();
PassWord = transform.FindChild ("PassWord").GetComponent();
Bit_Lagin = transform.FindChild ("Login").GetComponent();
Bit_Register = transform.FindChild ("Register").GetComponent();
Plane1.SetActive (false );
Plane2.SetActive (false );
}
void Start(){
//DontDestroyOnLoad (GetComponent());music = GetComponent();
music.clip = ac;DontDestroyOnLoad (this .gameObject );}
void? Update(){
}
////// 鼠標(biāo)點(diǎn)擊事件
/// 當(dāng)賬號(hào)和密碼都不為空時(shí)跳轉(zhuǎn)場(chǎng)景,當(dāng)有一個(gè)為空時(shí)就會(huì)出現(xiàn)Plane1
///public void LoginBtn(){music.Play ();
if (Account.text != "" &&? PassWord.text != "" ) {
Plane2.SetActive (true
);
if (Account .text == PlayerPrefs .GetString ("m_usename") && PassWord .text == PlayerPrefs .GetString ("m_passworld"))
{
print ("賬號(hào)密碼輸入成功");
Plane2.SetActive (false );
SceneManager.LoadScene ("Scene3");
}} else {
Plane1.SetActive (true);
}}
public? void ClosePlane1(){Plane1.SetActive (false );
Plane2.SetActive (false );
}
public void Register(){
SceneManager.LoadScene ("Scene2");
}
將該腳本賦給Scene2产艾,記得加場(chǎng)景的命名空間疤剑,和UI的命名空間,
記得Button點(diǎn)擊事件呦
public InputField m_usename;
public InputField m_passworld;
// Use this for initialization
void Start () {AS = GetComponent();
}
// Update is called once per frame
void Update () {}
//////如果注冊(cè)成功闷堡,點(diǎn)擊注冊(cè)按鈕跳轉(zhuǎn)回登陸界面
///
public void RegisterBtn (){
if (m_usename.text != "" && m_passworld.text != "") {
PlayerPrefs.SetString ("m_usename", m_usename.text);PlayerPrefs.SetString ("m_passworld", m_passworld.text);
SceneManager.LoadScene ("Scene1");
} else {
print ("賬號(hào)和密碼都不注冊(cè)你還想玩游戲");
}}
////// 如果不想注冊(cè)隘膘,點(diǎn)擊取消按鈕跳轉(zhuǎn)到登陸界面
/////trueif this instance cancel ; otherwise,false.
public? void? CancelBtn (){
SceneManager.LoadScene ("Scene1");
}
最后記得把場(chǎng)景都放到Building Seting里面
可能由于粘貼的原因,會(huì)出現(xiàn)錯(cuò)誤缚窿,
如果想學(xué)的同學(xué)可以加我的QQ841909433棘幸,記得表明加我的原因,我會(huì)耐心的為你們講解的