puerts icon indicating copy to clipboard operation
puerts copied to clipboard

[Unity] Bug: Vector3对象undefined

Open zh-enen opened this issue 1 year ago • 8 comments

前置阅读 | Pre-reading

Puer的版本 | Puer Version

1.3.4

Unity的版本 | Unity Version

2021.3.1f1c1

发生在哪个平台 | Platform

Editor(win)

错误信息 | Error Message

No response

问题重现 | Bug reproduce

在Update中执行代码: 1. const cpos = this.transform.localPosition 2. if (cpos == undefined || this.transform.localPosition == undefined) { 3. console.error(cpos, this.transform.localPosition) 4. } 执行完第一行代码之后,通过断点和打印得到以下几种情况 情况一:cpos = (1,1,1),this.transform.localPosition = undefined 情况二:cpos = undefined,this.transform.localPosition = (1,1,1) 情况三:进了if判断,cpos = (1,1,1),this.transform.localPosition = (1,1,1) 以上三种情况都是极小概率出现。 认真审核过代码没有其它地方有赋值操作。 尝试过的方案: 换1.3.9和1.4.0版本。 开启/关闭BlittableCopy。 使用StaticWrapper

zh-enen avatar Apr 18 '23 05:04 zh-enen

@zombieyang 能给看看吗

zh-enen avatar Apr 20 '23 09:04 zh-enen

@zombieyang 能给看看吗

极小概率的事情有点难入手查。 另外我没看懂你的描述,你说尝试过几种方案,是说这几种方案都会小概率出现吗?是只试了使用StaticWrapper的情况吗?

zombieyang avatar Apr 20 '23 13:04 zombieyang

@zombieyang 能给看看吗

极小概率的事情有点难入手查。 另外我没看懂你的描述,你说尝试过几种方案,是说这几种方案都会小概率出现吗?是只试了使用StaticWrapper的情况吗?

我改了下描述,那几种方案和不使用StaticWrapper都尝试过了都有概率出现。知道可能什么情况会出现这种bug吗?

zh-enen avatar Apr 21 '23 08:04 zh-enen

有个调试的思路你可以试试: 生成StaticWrapper,在wrapper里,localPosition的getter函数里打印Log。

看看当JS获得undefined的时候,对应C# wrapper里取到了什么东西。 如果C#里能取到,JS里undefined,就再往里面打印,直到PuertsDLL.ReturnObject为止。

如果还查不出,就需要自己编plugin来看了


另外,你的游戏里有多个JsEnv共存吗

zombieyang avatar Apr 21 '23 09:04 zombieyang

有个调试的思路你可以试试: 生成StaticWrapper,在wrapper里,localPosition的getter函数里打印Log。

看看当JS获得undefined的时候,对应C# wrapper里取到了什么东西。 如果C#里能取到,JS里undefined,就再往里面打印,直到PuertsDLL.ReturnObject为止。

如果还查不出,就需要自己编plugin来看了

另外,你的游戏里有多个JsEnv共存吗

好的我试试,就一个JsEnv

zh-enen avatar Apr 21 '23 13:04 zh-enen

多JsEnv应该也导致不了这问题。鉴于其他项目没反馈过类似的问题,我有点怀疑是多线程导致。 最好能提供个简单的重现工程。

chexiongsheng avatar Apr 23 '23 02:04 chexiongsheng

多JsEnv应该也导致不了这问题。鉴于其他项目没反馈过类似的问题,我有点怀疑是多线程导致。 最好能提供个简单的重现工程。

好的,我有时间提供一个demo

zh-enen avatar Apr 23 '23 06:04 zh-enen

https://github.com/Tencent/puerts/commit/41734e7aa76ec5dfae1b0142778206902ce0c1c1 试下这个修复能不能好。自己测试的过程中发现如果前面有构造函数抛过错,会在某一刻得到空的结构体。

zombieyang avatar May 22 '23 08:05 zombieyang