- Notifications
You must be signed in to change notification settings - Fork29
AtlasImage is a graphic component use SpriteAtlas for uGUI. In addition, add useful sprite selector and border editor to the inspector.
License
mob-sakai/AtlasImage
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A graphic component useSpriteAtlas
for uGUI.
In addition, add usefulsprite picker andborder editor to the inspector.
<<Description |Demo |Installation |Usage |Development Note |Change log >>
Are you still fatigued withSpriteAtlas
andImage
?
- No interface for SpriteAtlas
- Support only
Sprite
. - We pack sprites for drawing call optimization, but there is no interface.
- Support only
- Confusing sprite picker
- You can select sprites using object picker.
- Opject picker displaysall sprites in the project...
- Do you know which sprite is included in atlas?
- Troublesome border setting
- You can edit sprite border using sprite editor.
- It is troublesome to select a sprite, open a sprite editor, and edit the border.
AtlasImage
provides useful feature to useSpriteAtlas
for UI!
atlasImage.spriteAtlas=Resources.Load("A SpriteAtlas name")asSpriteAtlas;atlasImage.spriteName="A sprite name in the SpriteAtlas";
- Unity 2017.1 or later
This package is available onOpenUPM.
You can install it viaopenupm-cli.
openupm add com.coffee.atlas-image
Find the manifest.json file in the Packages folder of your project and add a line todependencies
field.
To update the package, change suffix#{version}
to the target version.
- e.g.
"com.coffee.atlas-image": "https://github.com/mob-sakai/AtlasImage.git#1.0.0",
Or, useUpmGitExtension to install and update the package.
- Download a source code zip file fromReleases page
- Extract it
- Import it into the following directory in your Unity project
Packages
(It works as an embedded package. For Unity 2018.1 or later)Assets
(Legacy way. For Unity 2017.1 or later)
- Enable SpriteAtlas. Go to
Edit > Project Settings > Editor
, and change the sprite packing mode from Disabled to either:- Enabled for Builds, when you want to use packing for builds only and not when in Play mode.
- Always Enabled when you want the packed Sprite to resolve its texture from the Sprite Atlas during Play mode, but resolve its texture from the original Texture during Edit mode.
- Add
AtlasImage
component instead ofImage
component fromAdd Component
in inspector. - Select the
SpriteAtlas
by dropdown manu, and select the sprite with object piker. - Enjoy!
- Pack atlas on open select sprite window.
staticvoidPackAtlas(SpriteAtlasatlas){System.Type.GetType("UnityEditor.U2D.SpriteAtlasUtility, UnityEditor").GetMethod("PackAtlases",BindingFlags.NonPublic|BindingFlags.Static).Invoke(null,newobject[]{new[]{atlas},EditorUserBuildSettings.activeBuildTarget});}
- Add label
<atlas-guid>
to sprites in atlas.
staticstringSetAtlasLabelToSprites(SpriteAtlasatlas,booladd){// GUID for the atlas.string[]atlasLabel={AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(atlas))};// Packed sprites in atlas.SerializedPropertyspPackedSprites=newSerializedObject(atlas).FindProperty("m_PackedSprites");Sprite[]sprites=Enumerable.Range(0,spPackedSprites.arraySize).Select(index=>spPackedSprites.GetArrayElementAtIndex(index).objectReferenceValue).OfType<Sprite>().ToArray();// Add/remove label to sprites.foreach(varsinsprites){string[]newLabels=add?AssetDatabase.GetLabels(s).Union(atlasLabel).ToArray():AssetDatabase.GetLabels(s).Except(atlasLabel).ToArray();AssetDatabase.SetLabels(s,newLabels);}returnatlasLabel[0];}
- Open the object picker with label. It filter the sprites to display.
EditorGUIUtility.ShowObjectPicker<Sprite>(atlas.GetSprite(spriteName),false,"l:"+atlasLabel,controlID);
- On closed the object picker, remove label from sprites in atlas.
Issues are very valuable to this project.
- Ideas are a valuable source of contributions others can make
- Problems show where this project is lacking
- With a question you show where contributors can improve the user experience
Pull requests are, a great way to get your ideas into this repository.
Seesandbox/README.md.
This is an open source project that I am developing in my spare time.
If you like it, please support me.
With your support, I can spend more time on development. :)
- MIT
- GitHub page :https://github.com/mob-sakai/AtlasImage
- Releases :https://github.com/mob-sakai/AtlasImage/releases
- Issue tracker :https://github.com/mob-sakai/AtlasImage/issues
- Change log :https://github.com/mob-sakai/AtlasImage/blob/main/CHANGELOG.md
About
AtlasImage is a graphic component use SpriteAtlas for uGUI. In addition, add useful sprite selector and border editor to the inspector.