unity 5 如何在角色创建菜单上显示 class 的统计信息?
unity 5 how can I display stats of an class on a Character Creation menu?
在 Unity 5 中制作游戏,我有主菜单和角色创建菜单。但是,在 CharacterCreation-Menu 中,我希望它在我单击菜单中的 class 后显示 "Warrior" 统计信息和 "Mage" 统计信息。我该怎么做?
我意识到我可以添加更多菜单,每个 class 统计数据都用 UI 文本放在屏幕上,但这不是很有趣,而且我可以添加一个新的canvas CharacterCreationg_Menu 上的每个玩家,但这会使一切都很难看清并且非常混乱。
我有一种预感,我应该在"public void Warrior"和"public void Mage"中添加必要的信息,但我想不通。
一旦我在 CharacterCreation_Script 中按下 class:
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 元素(视图),它显示任何字符 class(模型)的 stats/abilities/description。
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 中,您不会为每个 class 隐藏和显示特定的画布,但您只需创建不同类型的角色并将它们传递到您的视图:
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);
}
}
您还必须确保您的场景设置正确:
- 在您的场景中有一个 GameObject 代表角色详细信息视图区域,并为其提供与 CharacterDetailsView class.
中声明的那些相匹配的子 Text ui 元素
- 将 CharacterDetailsView 脚本添加到您的新游戏对象并将子文本元素分配给它们各自的字段。
- 最后,您将 GameObject 分配给 CharacterCreationScript 中的 characterDetailsView 字段。
尽管仍有很大的改进空间,但这比单独的 UI 元素更容易维护。
您可能想阅读模型-视图-控制设计模式,这对任何基于 UI 的游戏都应该非常有帮助。
在 Unity 5 中制作游戏,我有主菜单和角色创建菜单。但是,在 CharacterCreation-Menu 中,我希望它在我单击菜单中的 class 后显示 "Warrior" 统计信息和 "Mage" 统计信息。我该怎么做?
我意识到我可以添加更多菜单,每个 class 统计数据都用 UI 文本放在屏幕上,但这不是很有趣,而且我可以添加一个新的canvas CharacterCreationg_Menu 上的每个玩家,但这会使一切都很难看清并且非常混乱。
我有一种预感,我应该在"public void Warrior"和"public void Mage"中添加必要的信息,但我想不通。
一旦我在 CharacterCreation_Script 中按下 class: 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 元素(视图),它显示任何字符 class(模型)的 stats/abilities/description。
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 中,您不会为每个 class 隐藏和显示特定的画布,但您只需创建不同类型的角色并将它们传递到您的视图:
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);
}
}
您还必须确保您的场景设置正确:
- 在您的场景中有一个 GameObject 代表角色详细信息视图区域,并为其提供与 CharacterDetailsView class. 中声明的那些相匹配的子 Text ui 元素
- 将 CharacterDetailsView 脚本添加到您的新游戏对象并将子文本元素分配给它们各自的字段。
- 最后,您将 GameObject 分配给 CharacterCreationScript 中的 characterDetailsView 字段。
尽管仍有很大的改进空间,但这比单独的 UI 元素更容易维护。 您可能想阅读模型-视图-控制设计模式,这对任何基于 UI 的游戏都应该非常有帮助。