• 你好 有一些问题请教

http://zh.esotericsoftware.com/forum/UE4-Unreal-Widget-Animation-11660
从这里的讨论来看 似乎您参与了 spine ue4的运行时spinewidget的部分迭代
我这里刚好有个问题想请教您 不知您是否有试过在 umg设计界面选择了某个spine控件设置了资源后 再切换为其他的资源 我这尝试了很多次 总是会导致引擎崩溃
详细说明 http://zh.esotericsoftware.com/forum/UE4-UMG-Spine-spine-asset-15597?sid=a6feb2e539c2517837ec3b43adbdfd61
如果您能解答我的问题 不胜感激。

Related Discussions
...

您好,Spine Widget最初的功能实现的确是我开发的。后来因为换了工作,就没有再继续跟进这个插件了。我猜测可能是替换逻辑存在一些严谨性判断。我印象里好像是先更换skeleton data,再更新Atlas就不会造成崩溃。这个估计要和Spine的开发商去沟通一下,让他们把这部分的逻辑进行补全。

感谢您在百忙之中抽出时间回复
实际上我有尝试过 不管是先更换Atlas 还是Skeleton Data
只要尝试更换的或者原本的uasst是二进制文件导入的就会引起崩溃
不过我已经在尝试去修复引发这个问题的原因了
虽然我只是个ue4萌新 :lol:

25일 후

您好
很感谢您这么久还记得这个问题 同时也谢谢您分享的代码

以我浅薄的看法认为 导致引擎崩溃的根本原因是因为 Atlas中的保存的纹理数据与SkeletonData中的数据不匹配将导致以Binary方式导入数据 的数组越界或者指针访问了不可访问的内存
而Json方式是一种类似字典get的方式去访问数据 就算数据不匹配也不会导致引擎崩溃

所以我使用了一种取巧的方式
在SpineWidget编辑器模式下重写了PostEditChangeProperty函数
在这里面对属性更改监视 只要是Atlas或者SkeletonData 更改了 就自动去获取对应的SkeletonData/Atlas 数据 也就是说Atlas与SkeletonData数据是同时变更的 就不会产生数据不一致的情况 从而阻止了崩溃

其实主要是我看不懂你的代码 :lol: :lol: :lol:
毕竟我接触ue4也不久 先mark一下 以后说不定就看的懂了
哈哈哈