我创建了一个 Character 类,其构造函数为角色设置名称,并在一个文件中包含武器名称和伤害的 Weapon 结构。然后,我在另一个名为 Paladin 的文件中创建了一个 Character 子类,其中包含一个 Weapon 类型变量和继承自 Character 类的构造函数,该类为角色实例设置名称并创建一个新的 Weapon 实例。当我在另一个脚本文件中使用基本构造函数创建一个新的 Paladin 类型对象时,Unity 打印出一个 CS0103 错误,告诉我我给 Weapon 类型变量的名称在当前上下文中不存在。
我撞到了一堵巨大的实心砖墙。请帮忙。我尝试了我能想到的一切。
字符类:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Character {
public string characterName = "";
public int characterExp = 0;
public Character() {
characterName = "Not assigned";
}
// CONSTRUCTOR SETTING A NEW NAME FOR THE CHARACTER INSTANCE
public Character(string characterName) {
this.characterName = characterName;
}
public virtual void PrintStatsInfo() {
Debug.Log($"Character: {characterName} - {characterExp}.");
}
private void Reset() {
this.characterName = "Not assigned";
this.characterExp = 0;
}
}
武器结构:
public struct Weapon {
public string name;
public int damage;
public Weapon(string name, int damage) {
this.name = name;
this.damage = damage;
}
public void PrintWeaponStats() {
Debug.Log($"Weapon: {name} - {damage} DMB.");
}
圣骑士类(角色孩子):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Paladin: Character {
public Weapon weapon;
//CONSTRUCTOR INHERITED FROM CHARACTER CLASS
public Paladin(string characterName, Weapon weapon): base(characterName) {
this.weapon = weapon;
}
public override void PrintStatsInfo() {
Debug.Log($"Hey {characterName}, take your {weapon.name}");
}
}
执行其他工作的脚本文件:
using System.Collections.Generic;
using UnityEngine;
public class LearningCurve : MonoBehaviour {
//CREATING THE PALADIN INSTANCE USING THE BASE CONSTRUCTOR
Paladin knight = new Paladin("Osip", sword);
void Start() {
knight.PrintStatsInfo();
}
}