exdev / ex2d-dev

2D framework and pipeline for Unity3D
ex-dev.com/ex2d
GNU General Public License v3.0
6 stars 3 forks source link

通过 exSprite Component 的快捷选栏,列表中选择 TextureInfo/exBitmapFont, 快速切换None和Assets,之后确认选择,最终会导致crash. 在此过程中还会产生 null reference 的问题 #28

Open jwu opened 11 years ago

jwu commented 11 years ago

h_gc _m16quve nt o 0ix1 ml w4r iu c4 pub89fnq

有图有真相。

jwu commented 11 years ago

NullReferenceException: Object reference not set to an instance of an object exSprite.SimpleUpdateVertexBuffer (.exList`1 _vertices, Int32 _startIndex, UnityEngine.Matrix4x4& _spriteMatrix) (at Assets/ex2D/Runtime/Components/exSprite.cs:540) exSprite.GetVertices (UnityEngine.Matrix4x4& _spriteMatrix) (at Assets/ex2D/Runtime/Components/exSprite.cs:455) exSpriteBase.GetWorldVertices () (at Assets/ex2D/Runtime/Components/Internal/exSpriteBase.cs:550) exSceneEditor.DrawBoundingRect (.exSpriteBase _node) (at Assets/ex2D/Editor/exSceneEditor.cs:865) exSceneEditor.DrawScene (Rect _rect) (at Assets/ex2D/Editor/exSceneEditor.cs:774) exSceneEditor.SceneViewField (Rect _rect) (at Assets/ex2D/Editor/exSceneEditor.cs:563) exSceneEditor.Layout_SceneViewField (Int32 _width, Int32 _height) (at Assets/ex2D/Editor/exSceneEditor.cs:550) exSceneEditor.OnGUI () (at Assets/ex2D/Editor/exSceneEditor.cs:199) System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Applications/buildAgent/work/b59ae78cff80e584/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)

jareguo commented 11 years ago

已在GetVertices中加入保护,由于未能重现,还需要你测试一下。

jwu commented 11 years ago

NullReference 的错误已经解决,但是 Crash 仍然存在。一个比较简单的重现方法是在 None 的下面的那个 TextureInfo上按 "箭头上",这样他会在 None 和 TextureInfo之间快速反复切换。多试几次后,confirm,就会在反复试验中crash

jwu commented 11 years ago

Crash 的原因被锁定在 exEditorUtility.Init() 代码里。由于初始化了资源,并且初始化是在 Unity 推荐的 [InitializeOnLoad] 中进行。目前通过将 Init 中的代码挪到 Property 中来解决。

但是还是会出现另外一个叫做 PPtr cast failed when dereferencing! Casting from Texture2D to MonoBehaviour! 的报错信息。

发生的方法就是不断地点击 Camera 中的 Color 颜色,然后enter 确定颜色选择 我暂时认为这个是我们代码内照成的bug,虽然我网上找了下,有很多插件都有这种问题