留个档,批量给BuildSetting设置图片,不用手一个一个拖

27 篇文章 1 订阅
6 篇文章 0 订阅

直接上代码,批量给BuildSetting设置图片,不用手一个一个拖

/*
 * Icon路径:Application.dataPath + "/Res/Icon/";
 * 工程路径"Assets/Res/Icon/"下,放icon图片;
 * Icon文件名 :
 *          icon32
 *          icon64
 *          icon1024
 * 
 * 
 * BuildSetting不会自动刷新,需要关闭页签,重新打开后可以看到变化;
 * 实际上是Set成功的;
 */

using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEditor.iOS;
using System.IO;

public class IconSetting
{
    private static Dictionary<string, Texture2D> m_dicIcons = new Dictionary<string, Texture2D>();

    [MenuItem("自定义工具/批量操作PlayerSetting图片/自动装载iOS")]
    public static void DoLogicIOS()
    {
        LoadAllIcons();

        BuildTargetGroup platform = BuildTargetGroup.iOS;
		SetIcons(platform, iOSPlatformIconKind.Application);
		SetIcons(platform, iOSPlatformIconKind.Settings);
		SetIcons(platform, iOSPlatformIconKind.Notification);
		SetIcons(platform, iOSPlatformIconKind.Spotlight);
		SetIcons(platform, iOSPlatformIconKind.Marketing);
        Debug.Log("Set Icon Finish");
	}

    [MenuItem("自定义工具/批量操作PlayerSetting图片/清空Icon")]
    public static void ClearAllIconSetting()
    {
        BuildTargetGroup platform = BuildTargetGroup.iOS;
        ClearIcons(platform, iOSPlatformIconKind.Application);
        ClearIcons(platform, iOSPlatformIconKind.Settings);
        ClearIcons(platform, iOSPlatformIconKind.Notification);
        ClearIcons(platform, iOSPlatformIconKind.Spotlight);
        ClearIcons(platform, iOSPlatformIconKind.Marketing);
        Debug.Log("Clear Icon Finish");
    }

    static void ClearIcons(BuildTargetGroup platform, PlatformIconKind kind)
    {
        PlatformIcon[] icons = PlayerSettings.GetPlatformIcons(platform, kind);
        for (var i = 0; i < icons.Length; i++)
        {
            icons[i].SetTexture(null);
        }
        PlayerSettings.SetPlatformIcons(platform, kind, icons);
    }

    static void SetIcons(BuildTargetGroup platform, PlatformIconKind kind)
    {
        PlatformIcon[] icons = PlayerSettings.GetPlatformIcons(platform, kind);
		for (var i = 0; i < icons.Length; i++)
		{
            string strSize = GetSize(icons[i].ToString());

            if (m_dicIcons.ContainsKey(strSize))
            {
                icons[i].SetTexture(m_dicIcons[strSize]);
            }
            else
            {
                Debug.LogError("BuildSetting Icon - SetIcon, Not Contains Size : " + strSize);
            }
		}
		PlayerSettings.SetPlatformIcons(platform, kind, icons);
	}

    static string GetSize(string strField)
    {
        int nIndex = strField.IndexOf("x");
        return strField.Substring(1, nIndex - 1);
    }

    static void LoadAllIcons()
    {
        m_dicIcons.Clear();

        string strProjectPath = Application.dataPath;
        string strIconPath = strProjectPath + "/Res/Icon/";
        string[] strIcons = Directory.GetFiles(strIconPath, "*.jpg", SearchOption.AllDirectories);
		for (int i = 0; i < strIcons.Length; i++)
		{
            string strKey = Path.GetFileNameWithoutExtension(strIcons[i]);
            strKey = strKey.Replace("icon", "");
            if (m_dicIcons.ContainsKey(strKey))
            {
                Debug.LogError("BuildSetting Icon - LoadAllIcons, Same Name Icon : " + strKey);
                continue;
            }

            string strOnePath = strIcons[i];
            strOnePath = strOnePath.Replace(strProjectPath, "Assets");

            Texture2D pic = AssetDatabase.LoadAssetAtPath(strOnePath, typeof(Texture2D)) as Texture2D;
            if (pic == null)
            {
                Debug.LogError("BuildSetting Icon - LoadAllIcons, Load Field, Not a Texture2D Type : " + strOnePath);
                continue;
            }

            m_dicIcons.Add(strKey, pic);
        }
    }
}

程序学无止尽。
欢迎大家沟通,有啥不明确的,或者不对的,也可以和我私聊
我的QQ 334524067 神一般的狄狄

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值