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

在数羊项目中工作一段时间编辑器就会变得很卡 #45

Closed nantas closed 10 years ago

nantas commented 10 years ago

原因未知,没有头绪,因为在ex2D测试项目里没这个问题,所以可能是大量贴图资源导致的。

nantas commented 10 years ago

工作一段时间后打开2D Scene Editor,出现以下报错,怀疑和拖慢有关

OverflowException: Number overflow. exList`1[UnityEngine.Vector3].ToArray () (at Assets/ex2D/Runtime/Utilities/exList.cs:117) exSpriteFont.GetVertices (Space _space) (at Assets/ex2D/Runtime/Components/exSpriteFont.cs:451) exLayeredSprite.GetWorldVertices () (at Assets/ex2D/Runtime/Components/Internal/exLayeredSprite.cs:243) exEditorUtility.GL_DrawWireFrame (.exPlane _node, Color _color, Boolean ignoreZ) (at Assets/ex2D/Editor/Utilities/exEditorUtility.cs:688) exSceneEditor.DrawScene (Rect _rect) (at Assets/ex2D/Editor/exSceneEditor.cs:822) exSceneEditor.SceneViewField (Rect _rect) (at Assets/ex2D/Editor/exSceneEditor.cs:592) exSceneEditor.Layout_SceneViewField (Int32 _width, Int32 _height) (at Assets/ex2D/Editor/exSceneEditor.cs:575) exSceneEditor.OnGUI () (at Assets/ex2D/Editor/exSceneEditor.cs:186) System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Applications/buildAgent/work/c514da0c8183631c/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)

Assert Failed! UnityEngine.Debug:LogError(Object, Object) exDebug:Assert(Boolean, String, Boolean, Object) (at Assets/ex2D/Runtime/Utilities/exUtility.cs:70) exSpriteFont:GetVertices(Space) (at Assets/ex2D/Runtime/Components/exSpriteFont.cs:439) exLayeredSprite:GetWorldVertices() (at Assets/ex2D/Runtime/Components/Internal/exLayeredSprite.cs:243) exEditorUtility:GL_DrawWireFrame(exPlane, Color, Boolean) (at Assets/ex2D/Editor/Utilities/exEditorUtility.cs:688) exSceneEditor:DrawScene(Rect) (at Assets/ex2D/Editor/exSceneEditor.cs:822) exSceneEditor:SceneViewField(Rect) (at Assets/ex2D/Editor/exSceneEditor.cs:592) exSceneEditor:Layout_SceneViewField(Int32, Int32) (at Assets/ex2D/Editor/exSceneEditor.cs:575) exSceneEditor:OnGUI() (at Assets/ex2D/Editor/exSceneEditor.cs:186) UnityEditor.DockArea:OnGUI()

Matrix stack full depth reached UnityEngine.GL:PushMatrix() exSceneEditor:DrawScene(Rect) (at Assets/ex2D/Editor/exSceneEditor.cs:767) exSceneEditor:SceneViewField(Rect) (at Assets/ex2D/Editor/exSceneEditor.cs:592) exSceneEditor:Layout_SceneViewField(Int32, Int32) (at Assets/ex2D/Editor/exSceneEditor.cs:575) exSceneEditor:OnGUI() (at Assets/ex2D/Editor/exSceneEditor.cs:186) UnityEditor.DockArea:OnGUI()

jwu commented 10 years ago

这个错误已经在 Issue #52 中纠正。但这并不是造成卡顿的原因。

jareguo commented 10 years ago

这应该是之前ex2D的一个标记错误引起的,现在应该不会这样了。

jwu commented 10 years ago

在 ex2D Scene Editor 中,我把 Repaint 函数从 OnInspectorUpdate 中挪出,放入 OnSelectionUpdate 中,看看是否能够缓解这个问题