求助关于MONOBEHAVIOUR的小问题
unity3d吧
全部回复
仅看楼主
level 1
防空导弹 楼主
如下:
就是先新建了一个C#脚本,脚本名称(继承MONO的类名为B)
在这个.CS文件里创建了一个不继承于任何类或接口的类A;
然后再类A里面写了一个UPDATE()函数;
再在A类函数在FIXEDUPDATE()里面调用了一下;
结果一直报NullReferenceException: Object reference not set to an instance of an object
但是我好像所有参数都在AWAKE()里面赋值了。
几乎所有的参数函数都给我改成public还不行;
就像这样:
USING...
public class A{
public A(int a,int b){构造函数}
public void Update(){
...
}
}
public Class B{
public A mya;
Void Awake(){
//赋值
mya=new A(1,2);}
Void FixedUpdate(){
mya.Update;//就是这行告诉我有问题
}
语法没有出错。
本人算新手,请问这样写是真不行(UNITY不支持)还是只是本人的疏漏,或者是要加一个什么关键字?
有人尝试并成功过吗(个人觉得行的话应该用得很普遍)
这么写可以吗
2023年07月18日 13点07分 1
level 1
防空导弹 楼主
mya.Update();括号加上忘打了
2023年07月18日 13点07分 2
level 10
可以,但是你发代码不如截图
2023年07月18日 15点07分 3
level 8
建议入门代码基础
我都不知道你这些A B是不是monobehavior
反正是不是都不能这样写
2023年07月18日 15点07分 4
B继承了MONO,A只是一个啥都不继承的类。 A的Update()不是MONO的UPDATE(),不依赖MONO的直接调用,只是在B的FIXEDUPDATE里面调用了一下罢了
2023年07月19日 04点07分
我的问题,B:MONO没打上,但代码里有,不是这个问题
2023年07月19日 05点07分
那有没有可能是其他问题
2023年07月19日 05点07分
所以的确是可以用的对吧...
2023年07月19日 05点07分
level 2
是的Unity不支持,他底层是识别继承mono类的类,再调用其Update函数的。所以只有继承了mono的类的Update才有效果
2023年07月19日 00点07分 5
不过你的代码写的没错的话,应该能运行,只是没效果罢了。看你代码是不是调用update方法没加()?
2023年07月19日 00点07分
...B调用FIxedUpdate()的时候也可以调用A的Update()函数,A并不需要MONO直接调用,我是这么想的,A的UPDATE()函数也可以换个名字不影响。应该是有效果的吧。?
2023年07月19日 05点07分
level 14
写法有问题 另外Unity只识别当前cs的第一个public class
2023年07月19日 01点07分 7
level 1
防空导弹 楼主
class B:Monobehaviour{}
忘打了
2023年07月19日 05点07分 8
level 5
npe出了一次还是一直出?
2023年07月19日 06点07分 9
level 1
可能是A.Update里面有变量为空
2023年07月19日 06点07分 10
1