-4

私はこれを理解しようとしましたが、できなかったので、ここにあります。intタイプを暗黙的に変換することはできませんBaseStats.Stat

using UnityEngine;
using System.Collections;

public class BaseStats : MonoBehaviour {

    public struct baseStats {
    public string name;
    public int level;
    public Stat hp;
    public int ap;

    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 exp;

        public baseStats(string Name, int Level, int Hp, int Ap, 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 Exp) {
            name = Name;
            level = Level;
            hp = Hp;
            ap = Ap;

            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;

            exp = Exp;

        }
    }

    public class Stat {
        int current;
        int max;
    }

    void Start() {

        baseStats mainChar = new baseStats( 
            "Truth",
            99,
            9999,
            999,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            100,
            255,
            255, 
            100,
            7777777);

        print(mainChar.level);

    }
}

現在と最大の HP を取得しようとしていますが、これがチュートリアルで教えられている方法です。残念ながら、チュートリアルは unityscript ですが、私は c# でコーディングを行いたいと思っています。

4

3 に答える 3

2

コンストラクターでは、次を割り当てています。

hp = Hp;

パラメータHPのタイプがどこで、フィールドをint次のように定義したかhpStat

public Stat hp;

それがエラーが発生する理由です。フィールドも定義したいと思いますintまた、補足として、 .Net 命名規則に従う方が良い

于 2013-04-14T09:42:42.180 に答える
0

問題は、コンストラクターを介してint( ) を渡し、それを( )Hp型の変数に代入することです。Stathp

hp = Hp;

コンストラクターを次のように変更します。

public baseStats(string Name, int Level, Stat Hp /*...*/){
    //...
}

編集:

引数 #3' は int' 式を型 BaseStats.Stat' に変換できず、BaseStats.baseStats.baseStats(string, int, BaseStats.Stat, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int)' には無効な引数があります

2番目の問題は、コンストラクターを変更することです。コンストラクターに正しいオブジェクトを渡す必要もあります。

baseStats mainChar = new baseStats( 
            "Truth",
            99,
            9999, //It's an int and you have to pass an object of type Stat
            999,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            100,
            255,
            255, 
            100,
            7777777);

次のように変更します。

Stat myStat = new Stat(); //create the object needed

baseStats mainChar = new baseStats( 
            "Truth",
            99,
            myStat,  //pass it!
            999,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            255,
            100,
            255,
            255, 
            100,
            7777777);
于 2013-04-14T09:45:34.153 に答える
0

まず第一に、代わりにあなたが提供した使用法に従っているStat必要があります-Enumclass

public enum Stat
{
   int current;
   int max;
}

これは型変換の問題です。パラメータを Enum (Stat) として渡すか -

public baseStats(string Name, int Level, Stat Hp, ....)

または、割り当ての前に列挙型(Stat)に型キャストします-

hp = (Stat)Hp;
于 2013-04-14T09:47:38.603 に答える