OOIII/

NGUI使用texturepacker的资源批量生成图集

最近做的一个项目中需要用到图集,做了个实验,一张1024的png,NGUI生成的图集要比texturepacker大出100kb来,所以决定用texturepacker制作图集再给NGUI用,但是有个问题,在使用texturepacker制作的图集时需要替换相应的大图和配置文件,只有一个图集还好办,但是我要使用100个图集,如果每个都手动拖拽,还不得累死我啊,so想用代码一键生成,NGUI没有这样的功能,只能自己写插件了,过程还算顺利,只是有一个地方,导入tp配置文件时愣是没找到这个方法或者属性,头都大了,后来,我随便拖一个文件到tp import项中,有个警告,顺着这个警告我就找到了那个方法,看来报错也是一件好事啊!

代码奉上,注意,继承Eidtor时才可以使用解析字符串的方法,所以脚本要放在Editor文件夹中,在使用前确保tp的图集和配置文件已按照一定的命名规则放在Resources文件夹或者子文件夹中。

using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Generic;public class Prefab__ : Editor{    [MenuItem("OOIII/prefab_1")]    static void Prefab_()    {        GameObject tempObj = new GameObject();        tempObj.AddComponent<UIAtlas>();        for (int i = -10; i < 11; i++)        {            for (int j = 0; j < 5; j++)            {                string fileName = "LP_HG020_" + i.ToString() + "_" + j.ToString();                //创建材质球                Material emptyMat = new Material(Shader.Find("Unlit/Transparent Colored"));                AssetDatabase.CreateAsset(emptyMat, "Assets/Resources/Prefabs/" + fileName + ".mat");                emptyMat = Resources.Load("Prefabs/" + fileName, typeof(Material)) as Material;                Texture t2d = Resources.Load("Prefabs/" + fileName, typeof(Texture)) as Texture;                emptyMat.mainTexture = t2d;                //给临时go赋材质                tempObj.GetComponent<UIAtlas>().spriteMaterial = emptyMat;                //导入配置文件                TextAsset txt = Resources.Load("Prefabs/" + fileName, typeof(TextAsset)) as TextAsset;                NGUIJson.LoadSpriteData(tempObj.GetComponent<UIAtlas>(), txt);                //创建预设体		                string fileLocation = "Assets/Resources/Prefabs/" + fileName + ".prefab";                Object emptyObj = PrefabUtility.CreateEmptyPrefab(fileLocation);                PrefabUtility.ReplacePrefab(tempObj, emptyObj, ReplacePrefabOptions.ConnectToPrefab);            }        }        Editor.DestroyImmediate(tempObj);        AssetDatabase.Refresh();    }}

留下一条评论

暂无评论