unity UGUI实现类似NGUI切换Sprite的方式 | 您所在的位置:网站首页 › 饥荒买的物品皮肤怎么使用 › unity UGUI实现类似NGUI切换Sprite的方式 |
using UnityEngine;using UnityEditor;using System.Collections;using System.IO;using System.Collections.Generic; public static class UGUICreateSpriteAsset{ [MenuItem("Assets/Create/UGUI Sprite Asset", false, 10)] static void main() { Object target = Selection.activeObject; if (target == null || target.GetType() != typeof(Texture2D)) return; Texture2D sourceTex = target as Texture2D; //整体路径 string filePathWithName = AssetDatabase.GetAssetPath(sourceTex); //带后缀的文件名 string fileNameWithExtension = Path.GetFileName(filePathWithName); //不带后缀的文件名 string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePathWithName); //不带文件名的路径 string filePath = filePathWithName.Replace(fileNameWithExtension, ""); UGUISpriteAsset spriteAsset = AssetDatabase.LoadAssetAtPath(filePath + fileNameWithoutExtension + ".asset", typeof(UGUISpriteAsset)) as UGUISpriteAsset; bool isNewAsset = spriteAsset == null ? true : false; if (isNewAsset) { spriteAsset = ScriptableObject.CreateInstance(); spriteAsset.texSource = sourceTex; spriteAsset.listSpriteAssetInfor = GetSpritesInfor(sourceTex); AssetDatabase.CreateAsset(spriteAsset, filePath + fileNameWithoutExtension + ".asset"); } } public static List GetSpritesInfor(Texture2D tex) { List m_sprites = new List(); string filePath = UnityEditor.AssetDatabase.GetAssetPath(tex); Object[] objects = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(filePath); for (int i = 0; i < objects.Length; i++) { if (objects[i].GetType() == typeof(Sprite)) { SpriteAssetInfor temp = new SpriteAssetInfor(); Sprite sprite = objects[i] as Sprite; temp.ID = i; temp.name = sprite.name; temp.pivot = sprite.pivot; temp.rect = sprite.rect; temp.sprite = sprite; m_sprites.Add(temp); } } return m_sprites; } } |
CopyRight 2018-2019 实验室设备网 版权所有 |