gpt4 book ai didi

c# - unity 5 如何在角色创建菜单上显示某个类的统计信息?

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:56 25 4
gpt4 key购买 nike

在 Unity 5 中制作游戏时,我有主菜单和角色创建菜单。但是,在 CharacterCreation-Menu 中,我希望它在我单击菜单中的该类别后显示“Warrior”统计数据和“Mage”统计数据。我该怎么做?

我意识到我可以添加更多菜单,每个类的统计信息都用 UI 文本放在屏幕上,但这不是那么有趣,我还可以在 CharacterCreationg_Menu 上为每个玩家添加一个新 Canvas ,但这会使一切都很难看清并且非常凌乱。

我有一种预感,我应该在“public void Warrior”和“public void Mage”中添加必要的信息,但我想不通。

一旦我按下 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 元素( View ),它显示任何角色类别(模型)的统计数据/能力/描述。

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 中,您不会为每个类隐藏和显示特定的 Canvas ,但您只需创建不同类型的角色并将它们传递给您的 View :

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);
}
}

您还必须确保您的场景设置正确:

  • 在您的场景中有一个表示角色详细信息 View 区域的 GameObject,并为其提供与 CharacterDetailsView 类中声明的元素相匹配的子文本 ui 元素。
  • 将 CharacterDetailsView 脚本添加到您的新游戏对象并将子文本元素分配给它们各自的字段。
  • 最后,您将游戏对象分配给 CharacterCreationScript 中的 characterDetailsView 字段。

尽管仍有很大的改进空间,但这比拥有单独的 UI 元素更容易维护。您可能需要阅读模型- View -控制设计模式,这对任何基于 UI 的游戏都应该非常有帮助。

关于c# - unity 5 如何在角色创建菜单上显示某个类的统计信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34431945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com