C# 在inspector中显示统计数据?

C# 在inspector中显示统计数据?,c#,unity3d,inspector,C#,Unity3d,Inspector,我如何在inspector中显示mainChars统计信息 using UnityEngine; using System.Collections; public class BaseStats : MonoBehaviour { public struct baseStats { public string name; public int currentLevel; public int targetLevel; p

我如何在inspector中显示mainChars统计信息

using UnityEngine;
using System.Collections;

public class BaseStats : MonoBehaviour {

    public struct baseStats {
        public string name;
        public int currentLevel;
        public int targetLevel;
        public int currentHp;
        public int maxHp;
        public int currentAp;
        public int maxAp;

        public int strength;
        public int toughness;
        public int agility;
        public int intelligence;
        public int willPower;
        public int luck;

        public int attack;
        public int hitPercentage;
        public int defence;
        public int evasionPercentage;
        public int abilityAttack;
        public int abilityDefence;
        public int abilityDefencePercentage;

        public int currentExp;
        public int targetExp;

        public baseStats(string Name, int CurrentLevel, int TargetLevel, int CurrentHp, int MaxHp, int CurrentAp, int MaxAp, int Strength, int Toughness, int Agility, int Intelligence, int WillPower, int Luck, int Attack, int HitPercentage, int Defence, int EvasionPercentage, int AbilityAttack, int AbilityDefence, int AbilityDefencePercentage, int CurrentExp, int TargetExp) {
            name = Name;
            currentLevel = CurrentLevel;
            targetLevel = TargetLevel;
            currentHp = CurrentHp;
            maxHp = MaxHp;
            currentAp = CurrentAp;
            maxAp = MaxAp;

            strength = Strength;
            toughness = Toughness;
            agility = Agility;
            intelligence = Intelligence;
            willPower = WillPower;
            luck = Luck;

            attack = Attack;
            hitPercentage = HitPercentage;
            defence = Defence;
            evasionPercentage = EvasionPercentage;
            abilityAttack = AbilityAttack;
            abilityDefence = AbilityDefence;
            abilityDefencePercentage = AbilityDefencePercentage;

            currentExp = CurrentExp;
            targetExp = TargetExp;
        }
    }

    void Start() {
        baseStats mainChar = new baseStats(
            "Truth",
            98,
            99,
            7554,
            9999,
            754,
            999,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            100,
            255,
            255, 
            100,
            7773473,
            7777777);

        print(mainChar.currentHp);
    }

}

我想要它,在那里我可以使每个字符在检查器下拉。我还想要它,这样我就可以不让hp成为当前和最大值,也可以让它成为包含当前和最大值的每个字符的下拉列表,ap和exp也是如此。高级感谢

将struct baseStats更改为class baseStats并使其可序列化,
struct
是一种值类型,Unity不会序列化它,因此更改为class。之所以使用
[System.Serializable]
,是因为编辑器需要知道在运行预览、关闭场景、打开场景等时如何保存和恢复类数据

public class BaseStatComponent : MonoBehaviour {
    [System.Serializable]
    public class baseStats {
       public int Example;
    }
    public baseStats mainChar; //this will be accessible to inspector now.

    void Start() {
        // This will always create a new instance of baseStats that overrides the values
        // set in inspector.  Remove this line if you want the values set in the
        // inspector to remain.
        mainChar = new baseStats { Example = 12 };
    }
}

mainChar
现在将显示在检查器中。至于下拉列表的内容,我建议你读一下。这是一个值得深入研究的问题。

太酷了,谢谢!我怎样才能得到显示的实际值,它只显示0。我是否应该将公共baseStats设置为mainChar;在开始函数中?运行预览时,值将更改为您在
start()
函数中指定的值。在“开始”函数中指定值的唯一问题是,它们将始终覆盖在检查器中设置的值。由于您正在inspector中设置值,因此可以从
Start
中删除baseStats构造函数,并将这些值复制到inspector中的字段中。这些值将被保存。它永远不会更改为我指定的值D:哦,我想我会继续尝试。。。非常感谢你!!!这是因为您在
Start()
中将mainChar声明为局部变量,使其成为类成员,如我的示例所示。看我的编辑。你的男人!!哈哈,我整个周末都在试着做这个!!!谢谢你,伙计!