一直在网上搜索,并没有真正得到答案。我想做的是:
class Weapon1
{
public string Ability = "example";
}
class Weapon2
{
public string Ability = "other";
}
class Character : MonoBehaviour
{
Weapon1 foo = new weapon1();
Weapon2 boo = new weapon2();
void useAbility ()
{
gameObject.AddComponent(foo.Ability);
gameObject.AddComponent(boo.Ability);
}
}
但它告诉我它已经过时了。任何帮助表示赞赏。
答案 0 :(得分:1)
使用通用版本添加组件。
i.e gameObject.AddComponent<Ability>();
但是你需要将Ability转换成一个类。
我建议将你的所有能力作为能力的子类创建。
然后按名称明确添加能力......
i.e gameObject.AddComponent<AbilityInvisible>();
i.e gameObject.AddComponent<AbilityInstaGib>();
但您将无法再通过名称字符串动态添加功能。
为了解决这个问题,你可以使用接口,所以让你的能力实现IAbility接口。
然后你可以将接口注入一个方法来为gameObject添加这个功能......
即
public void UseAbility(IAbility ability)
{
gameObject.AddComponent(ability);
}
要调用此功能,您只需传入能力名称......
AddAbility(AbilityInvisible);
答案 1 :(得分:1)
你现在必须使用类型。看看是否有效:
var errorString: NSString?
let service = DaService(name: "My Name", error: &errorString)
无论如何,这比使用字符串要好得多。字符串更容易出错。
答案 2 :(得分:0)
def helloworld():
qParams = request.GET.get('q', '')
....
....