unity UGUI实现类似NGUI切换Sprite的方式 您所在的位置:网站首页 饥荒买的物品皮肤怎么使用 unity UGUI实现类似NGUI切换Sprite的方式

unity UGUI实现类似NGUI切换Sprite的方式

2022-12-19 09:56| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有