我正在开发Unity项目,我想从另一个脚本访问非MonoBehaviour脚本。 我不能使用GetComponent导致脚本不是MonoBehabiour,有没有解决方案? 以下是一些可以帮助您理解的代码:
public class SomeClass {
public static float coolVar = 1.0f;
private string someVar; // EDIT : I need to access this var too and AnotherClass.someVar won't work obviously
public class AnotherClass {
// i want to be able to access coolVar and change her value
// i know i can do SomeClass.coolVar but i was looking for another way close to a GetComponent approach
我的SomeClass类充满了我需要编辑的静态var,我没有实现那些变量,我无法修改它们(我知道这是不好的做法)。
也许反思是最好的方式:
typeof(SomeClasse).GetField(name).SetValue(null, value);
答案 0 :(得分:0)
您只需要在项目的Assets路径中包含非MonoBehaviour类的脚本,您就可以在其他行为类中使用它。 请注意在外部类中仅使用.NET 2.0规范,如果您在其上使用了命名空间,请在行为脚本中添加using。
#External class
namespace DefNamespace
{
public class ModelList
{
private static List<GameObject> models;
private ModelList ()
{
}
public static List<GameObject> Models{
get{
if(models == null) models= new List<GameObject>();
return models;
}set{
models=value;
}
}
}
}
然后在MonoBehaviour或其他课程中:
#Behaviour
using DefNamespace;
public class DefBehaviour : MonoBehaviour
{
Start(){
GameObject go=ModelList.Models[0];
}
}