第二章 角色创建
上一章中完成了初始化的场景界面的创建,本章就接着上一篇博客的内容,介绍角色创建的方法。
2.1 角色创建的UI界面
角色创建的背景采用与加载界面所用背景相同,并且Camera不需要移动。
创建的UI界面与之前类似,其中输入名字的地方用Prefab Toolbar中的Simple Input Field实现,效果如下
2.2 角色的创建与显示
资源包内配置了两个角色,分别是魔法师和剑士。这节要实现模型的导入工作,以及点击前后按钮切换角色的功能。
将角色Magician_No_Animation拖入场景,调节合适的位置信息。 之后将Magician_Animation中的idle部分拖入Animation之中,使静止的图像有了动作。之后存入Prefab之中,同理可添加剑士的idle信息。
为了实现角色的更换,我们需要借助preview按钮和next按钮实现魔法师和战士的切换,因此我们建立一个GameObject以控制角色选择,命名为CharacterCreation,新建脚本CharacterCreation
using UnityEngine;
using System.Collections;
public class CharacterCreation : MonoBehaviour {public GameObject[] characterPrefabs; //读取角色信息private GameObject[] characterGameObject; //获取characterPrefabs信息private int length; //共有的角色数// Use this for initializationvoid Start () {length = characterPrefabs.Length; //从导入的两个Prefab文件中获取共有的角色数characterGameObject = new GameObject[length];for (int i =0; i < length; i++){characterGameObject[i] = GameObject.Instantiate(characterPrefabs[i],transform.position,transform.rotation) as GameObject; //把characterPrefabs[i]中的信息赋值给 characterGameObject[i]}}// Update is called once per framevoid Update () {}
}
上述代码中创建了characterPrefab数组来储存两个角色的idle。因此我们指定size=2,并将两个idle信息拖入其中,运行后结果如下右图,但两个角色都显示出来了,需要进行修改。
为了解决这个问题,我们规定在刚开始选择角色时,只需要设置一个角色显示,其余的隐藏。
在CharacterCreation中添加一个函数
private int selectedIndex = 0; //当前职业
void UpdateCharacterInformation(){characterGameObject [selectedIndex].SetActive (true); //显示当前角色for (int i = 0; i<length; i++){if(i != selectedIndex){characterGameObject [i].SetActive (false);} //判断是否是当前角色,若不是,则隐藏}}
即可
2.3 角色的切换
我们通过控制前后按钮实现角色切换,在CharacterCreation中创建两个函数
void PressNextButton() //按下Next按钮{selectedIndex++; selectedIndex %= length; //将selectedIndex与length求余,若等于0,则选取下一个,若超出长度,自动变为初始角色,很巧妙的方法!UpdateCharacterInformation ();}void PressPreviewButton(){selectedIndex--;if (selectedIndex < 0) {selectedIndex = length-1;}UpdateCharacterInformation ();}
即可
对UI按键指定一个方法可以直接在On Click事件中添加 ,将方法method改为CharacterCreation中的PressNextButton()以及PressPreviewButton()即可
完成了上述两个Scene的创建后,我们留下了几大接口有待完善,即
- 开始场景到角色建立场景的切换
- New Game中保存创建角色信息并创建新的游戏场景
- 加载之前保存的信息,回到存档处(Load Game)
这些是之后所要解决的问题。
总结:第一篇和本篇博客介绍的部分均为游戏的初始部分,真正对游戏性进行修改的代码将从第三篇开始,包括基础的移动,各种系统的加入,难度会进行提升,篇幅也将会变得较长。