我有一个班级选择screen。它运行得非常好,我有一个开始游戏按钮,可以保存您选择的统计数据。
但是我如何在该类的类选择屏幕上放置一个精灵(可能一开始只能使用3-4个老动物精灵来使其工作,然后绘制它们),然后在游戏中绘制该精灵所在的狼( image)
类别选择gui代码:
using UnityEngine;
using UnityEngine.SceneManagement;
public class DisplayerCreatePlayerFunctions
{
private int classSelection;
private string[] classSelectionNames = new string[] { "Warrior","Mage","Archer","Priest","Rogue","Engineer"};
public void DisplayClassSelections()
{
classSelection = GUI.SelectionGrid(new Rect(50,50,450,115),classSelection,classSelectionNames,6);
GUI.Label(new Rect(710,300,300),FindClassDescription(classSelection));
GUI.Label(new Rect(710,100,FindClassStatvalues(classSelection));
GUI.Label(new Rect(710,200,FindClasspassive(classSelection));
//GUI.Label(new Rect(710,FindClasssprite(classSelection));
}
private string FindClassDescription(int classSelection)
{
if(classSelection == 0)
{
BaseCharacterClass tempClass = new BaseWarriorClass();
return tempClass.CharacterClassDescription;
}else if(classSelection == 1)
{
BaseCharacterClass tempClass = new BaseMageclass();
return tempClass.CharacterClassDescription;
}else if (classSelection == 2)
{
BaseCharacterClass tempClass = new BaseArcherClass();
return tempClass.CharacterClassDescription;
}else if (classSelection == 3)
{
BaseCharacterClass tempClass = new BasePriestClass();
return tempClass.CharacterClassDescription;
}else if (classSelection == 4)
{
BaseCharacterClass tempClass = new BaseRogueclass();
return tempClass.CharacterClassDescription;
}else if (classSelection == 5)
{
BaseCharacterClass tempClass = new BaseEngineerClass();
return tempClass.CharacterClassDescription;
}
return "NO CLASS FOUND";
}
private string FindClassStatvalues(int classSelection)
{
if (classSelection == 0)
{
BaseCharacterClass tempClass = new BaseWarriorClass();
string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
return tempStats;
}
if (classSelection == 1)
{
BaseCharacterClass tempClass = new BaseMageclass();
string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
return tempStats;
}
if (classSelection == 2)
{
BaseCharacterClass tempClass = new BaseArcherClass();
string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
return tempStats;
}
if (classSelection == 3)
{
BaseCharacterClass tempClass = new BasePriestClass();
string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
return tempStats;
}
if (classSelection == 4)
{
BaseCharacterClass tempClass = new BaseRogueclass();
string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
return tempStats;
}
if (classSelection == 5)
{
BaseCharacterClass tempClass = new BaseEngineerClass();
string tempStats = "Hp: " + tempClass.HitPoints + "\n" + "Mp: " + tempClass.ManaPoints + "\n" + "Int: " + tempClass.Intellect + "\n" + "Str: " + tempClass.Strength;
return tempStats;
}
return "NO STATS FOUND";
}
private string FindClasspassive(int classSelection)
{
if (classSelection == 0)
{
BaseCharacterClass tempClass = new BaseWarriorClass();
return tempClass.CharacterClasspassive;
}
if (classSelection == 1)
{
BaseCharacterClass tempClass = new BaseMageclass();
return tempClass.CharacterClasspassive;
}
if (classSelection == 2)
{
BaseCharacterClass tempClass = new BaseArcherClass();
return tempClass.CharacterClasspassive;
}
if (classSelection == 3)
{
BaseCharacterClass tempClass = new BasePriestClass();
return tempClass.CharacterClasspassive;
}
if (classSelection == 4)
{
BaseCharacterClass tempClass = new BaseRogueclass();
return tempClass.CharacterClasspassive;
}
if (classSelection == 5)
{
BaseCharacterClass tempClass = new BaseEngineerClass();
return tempClass.CharacterClasspassive;
}
return "NO PASSIVE FOUND";
}
public void playGame()
{
SceneManager.LoadScene(SceneManager.GetactiveScene().buildIndex + 1);
}
public void DisplayMainItems()
{
GUI.Label(new Rect(Screen.width / 2,20,250,100),"CREATE NEW PLAYER");
if(GUI.Button(new Rect(570,470,50),"Start Game"))
{
playGame();
}
}
}
我希望在类选择中更改所显示的精灵 但是目前我还不熟悉这个,所以我不确定如何实现。它显示了我的No sprite found else语句,但是当我尝试添加代码以在gui中显示图像时,它显示了空白。类似于将currentPlayerSprite变量绑定到某个位置(我在注释掉的函数中有该位置),然后在switch语句中更改在currentPlayerSprite中存储的精灵。