角色创建(魔法师和剑士)
开始角色创建场景
复制场景Start并改名为tcharacter creatio
将tcharacter creatio场景中不要的东西,主摄像机中的Move Camera(script)代码以及UI Root中的一部分
完成角色创建界面的UI设计
将所需要的按钮素材加入图集
在UI Root中添加Sprite并在需要是按钮的Sprite上添加按钮Button Script,并点击Sprite选择自己想要的按钮素材
在素材中找到输入名字预设物并拖入UI Root中调整至合适位置及大小
给按钮分别加入声音Play sound
设计ide状态的俩个角色
在素材中分别找出俩个人物模型拖入场景移到合适的位置
将默认静止的动画加到俩个人物角色身上,并将他们设为预制体
控制所有角色的创建和显示及选择
创建一个空物体并将他拖到圆盘中央
给空物体加代码CharacterCreationl,代码源码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterCreationl : MonoBehaviour {
public GameObject[]characterPrefabs;//数组用来存储角色
private GameObject[] characterGameObjects;//用来存储实例化之后的角色
private int selectedIndex = 0;//当前默认选择的角色
private int length;//所有角色的个数
// Use this for initialization
void Start () {
length = characterPrefabs.Length;
characterGameObjects = new GameObject[length];
for (int i = 0; i < length; i++)
{
characterGameObjects[i] = GameObject.Instantiate(characterPrefabs[i], transform.position, transform.rotation) as GameObject;
}
UpdateCharacterShow();
}
// Update is called once per frame
void Update () {
}
void UpdateCharacterShow()//更新所有角色的显示
{
characterGameObjects[selectedIndex].SetActive(true);
for (int i = 0; i < length; i++)
{
if (i != selectedIndex)
{
characterGameObjects[i].SetActive(false);//把选择的角色设为隐藏
}
}
}
public void OnNextButtonClick()//点击下一个按钮
{
selectedIndex++;
selectedIndex %= length;
UpdateCharacterShow();//更新显示,调用UpdateCharacterShow
}
public void OnPrevButtonClick()//点击下一个按钮
{
selectedIndex--;
if (selectedIndex == -1)
{
selectedIndex = length - 1;
}
UpdateCharacterShow();//更新显示,调用UpdateCharacterShow
}
}
将俩角色的预制体拖入空物体中
分别将空物体CharacterCreationl拖入俩个按钮的on Click中,Next按钮选择OnNextButtonClick,Prev按钮选择OnPrevButtonClick
处理名称的输入和场景的切换
在代码CharacterCreationl中加入 OnPrevButtonClick类
public void OnPrevButtonClick()//点击下一个按钮
{
selectedIndex--;
if (selectedIndex == -1)
{
selectedIndex = length - 1;
}
UpdateCharacterShow();//更新显示,调用UpdateCharacterShow
}
public void OnOkButtonLilck()//加载下一个场景
{
PlayerPrefs.SetInt("SelectedCharacterIndex", selectedIndex);//存储选择角色
PlayerPrefs.SetString("name", nameInput.value);//存储输入的名字
}
}
下期继续