[英]How can I have display a menu or dropdown list when user enters a special character e.g. %
[英]unity 5 how can I display stats of an class on a Character Creation menu?
在Unity 5中制作游戏,我有主菜单和CharacterCreation菜单。 但是在CharacterCreation-Menu中,我希望它在菜单中单击该类后显示“Warrior”统计数据和“Mage”统计数据。 我怎么能这样做?
我意识到我可以使用UI文本添加更多菜单,每个类统计信息都放在屏幕上,但这不会那么有趣,我也可以为CharacterCreationg_Menu上的每个玩家添加一个新画布,但这会使一切都如此很难看到,非常凌乱。
我有一种预感,我应该在“公共无效战士”和“公共虚空法师”中添加必要的信息但我无法弄明白。
一旦我按下CharacterCreation_Script中的一个类:CharacterCreation-Menu_Script:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class CharacterCreationScript : MonoBehaviour {
// Class Info
public Canvas classInfo;
// Class Buttons
public Button warrior;
public Button mage;
// Buttons
public Button createCharacter;
public Button goBack;
// Use this for initialization
void Start ()
{
classInfo = classInfo.GetComponent<Canvas>();
classInfo.enabled = false;
// Classes
warrior = warrior.GetComponent<Button>();
mage = mage.GetComponent<Button>();
// Buttons
createCharacter = createCharacter.GetComponent<Button>();
goBack = goBack.GetComponent<Button>();
}
// Classes
// Warrior
public void Warrior()
{
classInfo.enabled = true;
}
// Mage
public void Mage()
{
classInfo.enabled = true;
}
// Create Character Button
public void CreateCharacter()
{
Application.LoadLevel("NewGame");
}
// Go Back Button
public void GoBack()
{
Application.LoadLevel("MainMenu");
}
// Update is called once per frame
void Update ()
{
}
}
我在屏幕上弹出一个文本“Class Info”但是它不包含存储在Player_Classes中的信息:
战士
using UnityEngine;
using System.Collections;
public class BaseWarriorClass : BaseCharacterClass
{
public BaseWarriorClass()
{
// Basic
CharacterClassName = "Warrior";
CharacterClassDescription = "Uses melee to crush enemies.";
//Gold = 100;
// Stats
Health = 100;
Mana = 100;
Stamina = 10;
Strength = 20;
Intelligence = 5;
Armour = 0;
Resistance = 0;
}
}
魔术师
using UnityEngine;
using System.Collections;
public class BaseMageClass : BaseCharacterClass
{
public BaseMageClass()
{
// Basic
CharacterClassName = "Mage";
CharacterClassDescription = "Uses spells to vaporize enemies.";
//Gold = 100;
// Stats
Health = 100;
Mana = 100;
Stamina = 10;
Strength = 5;
Intelligence = 20;
Armour = 0;
Resistance = 0;
}
}
您可能只有一个通用UI元素(视图),显示任何字符类(模型)的统计/能力/描述。
public class CharacterDetailsView : MonoBehaviour
{
public Text healthText;
public Text manaText;
// ...
public void SetModel(BaseCharacterClass chr)
{
healthText.text = chr.Health.ToString();
manaText.text = chr.Mana.ToString();
// ...
}
}
在您的CharacterCreationScript中,您不会隐藏和显示每个类的特定画布,但您只需创建不同类型的字符并将它们传递给您的视图:
public class CharacterCreationScript : MonoBehaviour
{
public CharacterDetailsView characterDetailsView;
private BaseCharacterClass createdCharacter;
// ...
void WarriorClicked()
{
createdCharacter = new BaseWarriorClass();
UpdateCharacterDetailsView();
}
void MageClicked()
{
createdCharacter = new BaseMageClass();
UpdateCharacterDetailsView();
}
void UpdateCharacterDetailsView()
{
characterDetailsView.SetModel(createdCharacter);
}
}
您还必须确保您的场景设置正确:
即使仍有很大的改进空间,但这比单独的UI元素更容易维护。 您可能想要阅读模型 - 视图 - 控制设计模式,这对任何基于UI的游戏都非常有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.