-4

我试图弄清楚这一点,但一直没能做到。无法将类型隐式转换intBaseStats.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 达到电流和最大值,这就是教程教我的方式。不幸的是,本教程是在统一脚本中,而我想用 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)' 有一些无效参数

您的第二个问题是更改构造函数还必须将正确的对象传递给构造函数:

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应该根据Enum您提供的用法而不是class-

public enum Stat
{
   int current;
   int max;
}

这是类型转换的问题。将参数作为枚举(统计)传递 -

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

或在分配之前将其类型转换为枚举(Stat) -

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