Pregunta

How would I get mainChars stats to show in the inspector??

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

}

I want it where I can make each character a drop down in the inspector. Also I wanted it so that I could instead of making the hp a current and max, that also I could make it a dropdown in each character that would contain current and max, also the same for ap and exp. Thanks in advanced!!!

¿Fue útil?

Solución

Change struct baseStats to class baseStats and make it serializable, Struct is a value type and Unity won't serialize it, hence the change to a Class. The reason for [System.Serializable] is that the Editor needs to know how to save and restore class data when you run a preview, close your scene, open your scene, etc.

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 will show up in the inspector now. As for the drop down stuff, I suggest reading up on extending the Unity editor. That's a bit much to delve in to an SO question.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top