使用以下代码,我能够从“SMG”获取脚本并将其应用于武器对象:
weaponObject = GameObject.FindGameObjectWithTag(SMG).GetComponent<SMGScript>();
是否可以执行类似以下操作,如果可以,如何操作?
string variable = "SMG";
weaponObject = GameObject.FindGameObjectWithTag(variable).GetComponent<variable>();
我想要一些脚本,我可以根据变量将其应用于 weaponObject。
最佳答案
因为我看到武器的名称与脚本的名称不同,所以您需要 2 个变量。
string variable = "SMG";
string scriptName = "SMGScript";
GameObject.FindGameObjectWithTag(variable).GetComponent(scriptName);
这样效率不高。
解决方案
你想要做的是拥有一个父类,你所有的武器都将继承自它。
public interface Weapon
{
}
然后你像这个例子一样创建你所有的武器:
public class M4 : MonoBehaviour, Weapon
{
}
public class MP5: MonoBehaviour, Weapon
{
}
当你想获取脚本组件时,你可以简单地使用这个:
string tag = "Weapon";
Weapon w = GameObject.FindGameObjectWithTag(tag).GetComponent(typeof(Weapon)) as Weapon;
关于c# - 使用 GetComponent 获取使用字符串的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25361180/