Unity3D编辑器之脚本打开SpritePacker窗口
来源:互联网 发布:js鼠标移动显示图片 编辑:程序博客网 时间:2024/05/16 06:45
Unity3D编辑器之脚本打开SpritePacker窗口
正常情况下需要选择 Windows->SpritePacker 但是默认会选择第一个图集。如下图所示,这就很不爽了,因为我做了图集管理工具,我想在Insperctor窗口中点击某个按钮,自动打开SpritePacker并且选择我设置的图集怎么办?
SpritePacker窗口没有提供代码访问接口,那么我们可以使用强大的反射功能。我自己反编译一下Unity的Editor代码,然后找到图集的窗口类。然后看看它的实现方法,然后就有了如下的代码了。
[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
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
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 window = EditorWindow.focusedWindow;
//反射遍历所有图集
var type =
typeof
(EditorWindow).Assembly.GetType(
"UnityEditor.Sprites.PackerWindow"
);
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窗口,并且定位到我需要的图集上。
阅读全文
0 0
- Unity3D编辑器之脚本打开SpritePacker窗口
- unity3d--脚本编辑器介绍
- Unity3D编辑器之自定义窗口显示文件夹结构
- Unity3D研究院编辑器之打开unity不可识别的文件
- Unity3D研究院编辑器之脚本生成Preset Libraries
- Unity3D研究院编辑器之创建Lua脚本模板(十六)
- Unity3D之编辑器脚本获取资源内存和硬盘大小
- Unity3D Script脚本编辑器属性
- Unity3D编辑器:删掉MissingScirpt脚本
- UGUI研究院之SpritePacker打包教程
- 打开窗口及对话框脚本
- unity3d脚本之鸡零狗碎
- Unity3d Console双击不再默认打开编辑器
- Unity3D - 窗口、菜单界面介绍,资源管理,脚本
- 用visual studio当做unity3D脚本编辑器
- unity3D—Mono Develop脚本编辑器
- Unity3D【Mono Develop脚本编辑器介绍】
- 扩展Unity3D编辑器的脚本模板
- 常用的网络相关命令
- JS中onclick事件的一个坑
- Mysql-Connector-ODBC 安装报错126,解决办法
- 一致性 hash 算法( consistent hashing )
- Android 手势滑动识别
- Unity3D编辑器之脚本打开SpritePacker窗口
- OPENGL—编码裁剪(Cohen-Sutherland)法裁剪图
- Mysql基础
- HDU2159
- 让ScrollView滑动到最顶端
- Paxos算法细节详解--通过现实世界描述算法
- MySQL学习笔记(4)
- Android 反编译初探 应用是如何被注入广告的
- 【LeetCode】210. Course Schedule II