private void ValidateSpriteList() { if (m_Sprites.hasMultipleDifferentValues) { return; } if (m_Sprites.arraySize <= 1) { return; } Texture texture = null; for (int i = 0; i < m_Sprites.arraySize; i++) { SerializedProperty spriteData = m_Sprites.GetArrayElementAtIndex(i); SerializedProperty prop = spriteData.FindPropertyRelative("sprite"); Sprite sprite = prop.objectReferenceValue as Sprite; if (sprite != null) { // Find the sprite atlas asset for this texture, if it has one var spriteAtlas = SpriteEditorExtension.GetActiveAtlas(sprite); if (spriteAtlas != null) { if (spriteAtlas.GetPackingSettings().enableTightPacking) { EditorGUILayout.HelpBox("Tightly packed Sprite Atlases are not supported.", MessageType.Error, true); break; } } if (texture == null) { texture = sprite.GetTextureForPlayMode(); } else if (texture != sprite.GetTextureForPlayMode()) { if (EditorSettings.spritePackerMode == SpritePackerMode.Disabled) { EditorGUILayout.HelpBox("To use multiple sprites, enable the Sprite Packer Mode in the Editor Project Settings, and create a Texture Atlas.", MessageType.Error, true); } else if (EditorSettings.spritePackerMode == SpritePackerMode.SpriteAtlasV2 || EditorSettings.spritePackerMode == SpritePackerMode.AlwaysOnAtlas || EditorSettings.spritePackerMode == SpritePackerMode.BuildTimeOnlyAtlas) { EditorGUILayout.HelpBox("All Sprites must share the same Texture Atlas. Also check that all your sprites fit onto 1 texture of the Sprite Atlas.", MessageType.Error, true); } else { EditorGUILayout.HelpBox("All Sprites must share the same texture. Either pack all Sprites into one Texture by setting the Packing Tag, or use a Multiple Mode Sprite.", MessageType.Error, true); } break; } else if (sprite.border != Vector4.zero) { EditorGUILayout.HelpBox("Sprite borders are not supported. They will be ignored.", MessageType.Warning, true); break; } } } }
internal static Texture2D GetAtlasTexture(this Sprite sprite) { var texture = SpriteEditorExtension.GetActiveAtlasTexture(sprite); if (null == texture || !texture) { return(null); } return(texture.GetInstanceID() == sprite.texture.GetInstanceID() ? null : texture); }
internal static Vector2 GetAtlasTextureRectOffset(this Sprite sprite) { return(SpriteEditorExtension.GetActiveAtlasTextureRectOffset(sprite)); }
internal static Texture2D GetAtlasAlphaTexture(this Sprite sprite) { return(SpriteEditorExtension.GetActiveAtlasAlphaTexture(sprite)); }
internal static SpriteAtlas GetAtlas(this Sprite sprite) { return(SpriteEditorExtension.GetActiveAtlas(sprite)); }