网站首页 > 游戏开发 正文
正常情况下需要选择 Windows->SpritePacker 但是默认会选择第一个图集。如下图所示,这就很不爽了,因为我做了图集管理工具,我想在Insperctor窗口中点击某个按钮,自动打开SpritePacker并且选择我设置的图集怎么办?
SpritePacker窗口没有提供代码访问接口,那么我们可以使用强大的反射功能。我自己反编译一下Unity的Editor代码,然后找到图集的窗口类。然后看看它的实现方法,然后就有了如下的代码了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | using UnityEditor ;
using System . Reflection ;
using UnityEditor . Sprites ;
public class MyEditor : Editor {
[ MenuItem ( "GameObject/SearchAtlas" , false , 0 ) ]
static void StartInitializeOnLoadMethod1 ( )
{
//需要Sprite Packer界面定位的图集名称
string spriteName = "atlas_name2" ;
//设置使用采取图集的方式
EditorSettings . spritePackerMode = SpritePackerMode . AlwaysOn ;
//打包图集
Packer . RebuildAtlasCacheIfNeeded ( EditorUserBuildSettings . activeBuildTarget , true ) ;
//打开SpritePack窗口
EditorApplication . ExecuteMenuItem ( "Window/Sprite Packer" ) ;
//反射遍历所有图集
var type = typeof ( EditorWindow ) . Assembly . GetType ( "UnityEditor.Sprites.PackerWindow" ) ;
var window = EditorWindow . GetWindow ( type ) ;
FieldInfo infoNames = type . GetField ( "m_AtlasNames" , BindingFlags . NonPublic | BindingFlags . Instance ) ;
string [ ] infoNamesArray = ( string [ ] ) infoNames . GetValue ( window ) ;
if ( infoNamesArray != null )
{
for ( int i = 0 ; i < infoNamesArray . Length ; i ++ )
{
if ( infoNamesArray [ i ] == spriteName )
{
//找到后设置索引
FieldInfo info = type . GetField ( "m_SelectedAtlas" , BindingFlags . NonPublic | BindingFlags . Instance ) ;
info . SetValue ( window , i ) ;
break ;
}
}
}
}
}
|
OK.如下图所示,脚本打开SpritePacker窗口,并且定位到我需要的图集上。
Unity版本5.2.2
猜你喜欢
- 2022-04-24 Unity3D研究院之通过ipa或apk获取游戏所使用的unity和Xcode版本
- 2022-04-24 Unity3D研究院编辑器之脚本生成Preset Libraries(十四)
- 2021-09-07 Unity3D研究院之系统内置系统图标大整理
- 2021-09-06 Unity3D研究院编辑器之5.3JSON的序列化
- 2021-09-06 #你好Unity3D#Hierarchy视图监听gameObject点击事件
- 2021-09-04 Unity3D研究院编辑器之自定义默认资源的Inspector面板(十)
- 2021-09-04 Unity3D研究院之两个游戏工程资源同步问题(八十六)
- 2021-09-04 Unity3D研究院编辑器之不实例化Prefab获取删除更新组件(十五)
- 2021-08-30 Unity3D研究院编辑器之独立Inspector属性(九)
- 2021-08-30 Unity3D研究院之悬浮框显示其他游戏电流功耗(一百二十六)
你 发表评论:
欢迎- 开源分类
- 最近发表
- 开源网标签
本文暂时没有评论,来添加一个吧(●'◡'●)