通過NGUI和工程素材,學習泰課項目——黑暗之光。
現階段心得整理:
一、開始界面
開始界面顯示順序為:①白幕漸隱;②鏡頭拉近;③標題漸顯;④按鍵響應。
1.1 白幕漸隱
NGUI是一個非常強大的插件,將圖形文件打包為Atlas后,添加純白白幕;之后設定白幕Alpha值從255到0,實現白幕漸隱的效果;
1.2 鏡頭拉近
在調整好鏡頭的位置后,通過腳本中transform.translate(Vector3.forward*Time.deltaTime)對鏡頭Z軸進行調整,判斷條件為if(transfrom.position.z >= cameraEnd);
1.3 標題漸顯
同1.1的白幕漸隱效果,需要將標題的Alpha值從0調整到255,但是注意:需要在導入后將Alpha值先調整為0,否則會出現“顯 隱 顯”的BUG;
NGUI提供了pingpang效果,選擇后實現標題提示語句的pingpang提示;
1.4 按鍵響應
同樣使用NGUI提供的功能,對導入的圖形上Attach上BoxCollider標簽,然后Attach上ButtonScript,在OnClick上加入需要響應的GameObject的方法;
二、角色選擇界面
角色選擇界面需要實現的功能有:①選擇界面搭建;②角色的顯示及切換;③輸入角色名稱
2.1 選擇界面搭建
同樣使用NGUI提供的Button功能,完成Next、Pres按鍵的導入;
2.2 角色的顯示及切換
該功能其實包含了三方面,顯示、條件顯示及切換。
①角色的顯示
將人物角色模型綁定Idle動作,預制成為Prefabs,共有兩個人物模型,命名為“C1”“C2”,並在場景中設定角色生產位置,命名為“CPosition”;
在CPosition上添加腳本,腳本主體如下:
public GameObjects[] GameCharacters; //定義一個GameObject數組,后續將C1、C2添加進去
private int Length; //定義GameObject的長度
void Start()
{
Length = GameCharacters.Length;
for(int i = 0; i < Length ; i ++)
{
GameObjects[i] = GameObject. Instantiate(GameObject[i],transform.position,transform.rotation) as GameObject; //實例化角色模型至場景
}
}
② 角色的條件顯示
經上述腳本,因為執行的是for循環,將兩個模型全部顯示在了場景中,所以需要對角色顯示添加甄別方法
代碼思路,添加角色代碼CharacterIndex,添加方法只顯示目標CharacterIndex的模型;
private Int CharacterIndex = 0;
void CharacterSelect()
{
GameObjects[CharacterIndex].setActive(true); //首先將目標角色顯示狀態定義為True,如果漏掉這一句的話,一個循環后,你家模型就都被隱藏了
for(int i = 0; i < Length ; i++)
{
if(i != CharacterIndex)
{
GameObjects[i].setActive(false); //將目標角色以外模型全部隱藏掉
}
}
}
然后在Start方法最后加入 CharacterSelect( ) 調用就可以了。
③切換
通過上述方法,我們的場景中現在只有一個模型了(實際上是兩個,一個被隱藏了)。而且可以根據CharacterIndex進行角色選擇,那么加入對CharacterIndex的控制方法就可以實現對角色的切換了。
public void OnNextButton( ) //注意此處使用了public修飾,因為這個方法得綁到按鍵上去生效用的
{
CharacterIndex++; //標示數字加1
if(CharacterIndex >= Length)
{
CharacterIndex -= Length; //如果索引超界限,回歸至索引序列1
}
}
同理,添加一個OnPresButton方法,限制條件為 (if CharacterIndex < 0){ CharacterIndex = Length - 1; }
將上述方法綁到按鈕上,便實現了角色的切換。
2.3 角色名的輸入
通過NGUI添加SimpleText模塊,通過PlayerPrefabs類讀取用戶輸入文本即可。
今日的總結到此為止。