hicz
(hicz)
1
在写一个自定义的component的时候碰到的问题,中间用到了AvoidanceManager,在engine的source里
cpp文件里面有这么一句:
ReturnVelocity = BestVelocity;
但是并没能赋值给左边的变量。
上面是debug时候的截图,可以看到赋值后左边的值不是(26,-298, 0),而是(0,0,0)……
从来没有碰上过这种情况。。。赋值语句不应该产生歧义的吧。。。。
有没有人能帮下忙。。项目做到后期碰上这么个奇怪的问题……解决不了的话好多代码都要重写了T_T
确定不是多线程 确定是同一个 frame 例如 多线程 或者 函数多次调用 不是在同一次函数调用中
Mi.Wang
(Mi.Wang)
4
这一定是编译器优化导致debug信息不对而已,这一切都是错觉,淡定。
你用的是development或者debuggame编译的版本吧,用debug编译后再看应该就没问题了。
hicz
(hicz)
5
感谢回复!
确定不是多线程,确定是在一个frame,确定是在同一次函数调用中
函数只在一个component的tick component里面调用过一次。。没有其他的调用。。
用的是debuggame editor的编译,存在问题。。
好像是编译器优化把什么东西优化没了。。
仅仅是编译器优化的问题也就算了。。。
但是……
返回值也是错误的。。这就比较麻烦了。。。
hicz
(hicz)
6
找了一下没有找到debug的编译,只有debuggame 和debuggame editor,
可以问一下从哪能找到debug的编译吗?
Mi.Wang
(Mi.Wang)
7
你用的是launcher版本吧?launcher版本的引擎是不会重新编译的,只会编译game模块,所以没有debug版本引擎的选项,如果你是源码版本的话就有了
如果不是多线程,这里赋值完之后没有覆盖,照道理是不会有问题的,你说的返回值错误是上一层函数拿到的数值错误吗?会不会也是编译器优化所以结果出错?或者返回值的变量被某些之后执行的越界代码冲了内存?