using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System;
using UObject = UnityEngine.Object;
using System.IO; public class lgs
{
[MenuItem("Assets/AlphaSpliter ")]
static void AlphaSpliter()
{
UObject[] objs = Selection.objects;
for (int i = ; i < objs.Length; i++)
{
Texture tex = objs[i] as Texture;
CreateRGBTexture(tex);
CreateAlphaTexture(tex as Texture2D);
}
} static void CreateAlphaTexture(Texture2D src)
{
if (null == src)
throw new ArgumentNullException("src"); //create alpha texture
var srcPixels = src.GetPixels();
var targetPixels = new Color[srcPixels.Length];
for (int i = , iMax = srcPixels.Length; i < iMax; ++i)
{
float r = srcPixels[i].a;
targetPixels[i] = new Color(r, r, r);
} Texture2D alphaTex = new Texture2D(src.width, src.height, TextureFormat.ARGB32, false);
alphaTex.SetPixels(targetPixels);
alphaTex.Apply(); //save alpha texture
string srcPath = AssetDatabase.GetAssetPath(src);
string ext = Path.GetExtension(srcPath);
string newPath = string.Format("{0}{1}{2}", srcPath.Substring(, srcPath.Length - ext.Length), "_alpha", ext);
string fullPath = GetFullPath(newPath);
var bytes = alphaTex.EncodeToPNG();
File.WriteAllBytes(fullPath, bytes); AssetDatabase.SaveAssets();
AssetDatabase.Refresh(); int size = Mathf.Max(src.width, src.height, );
Setting(newPath, size, TextureImporterFormat.ETC_RGB4, TextureImporterFormat.PVRTC_RGB4);
} static void CreateRGBTexture(Texture src)
{
if (null == src)
throw new ArgumentNullException("src"); string srcPath = AssetDatabase.GetAssetPath(src);
string ext = Path.GetExtension(srcPath);
string newPath = string.Format("{0}{1}{2}", srcPath.Substring(, srcPath.Length - ext.Length), "_rgb", ext); AssetDatabase.DeleteAsset(newPath);
AssetDatabase.CopyAsset(srcPath, newPath);
AssetDatabase.ImportAsset(newPath); int size = Mathf.Max(src.width, src.height, );
Setting(newPath, size, TextureImporterFormat.ETC_RGB4, TextureImporterFormat.PVRTC_RGB4);
} static void Setting(string assetPath, int maxSize, TextureImporterFormat androidFormat, TextureImporterFormat iosFormat)
{
var texImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
{
texImporter.npotScale = TextureImporterNPOTScale.ToNearest;
texImporter.isReadable = false;
texImporter.mipmapEnabled = false;
texImporter.alphaIsTransparency = true;
texImporter.wrapMode = TextureWrapMode.Clamp;
texImporter.filterMode = FilterMode.Bilinear;
texImporter.anisoLevel = ; //纹理的各向异性滤波水平
texImporter.SetPlatformTextureSettings("Android", maxSize, androidFormat);
texImporter.SetPlatformTextureSettings("iPhone", maxSize, iosFormat);
texImporter.SetPlatformTextureSettings("Standalone", maxSize, TextureImporterFormat.ARGB32);
} AssetDatabase.ImportAsset(assetPath);
AssetDatabase.SaveAssets();
} /// <summary>
/// asset path 转 full path
/// </summary>
public static string GetFullPath(string assetPath)
{
if (string.IsNullOrEmpty(assetPath))
return ""; string p = Application.dataPath + assetPath.Substring();
return p.Replace("\\", "/");
} /// <summary>
/// full path 转 asset path
/// </summary>
public static string GetAssetPath(string fullPath)
{
if (string.IsNullOrEmpty(fullPath))
return ""; fullPath = fullPath.Replace("\\", "/");
return fullPath.StartsWith("Assets/") ?
fullPath :
"Assets" + fullPath.Substring(Application.dataPath.Length);
}
}

Unity --- 在原目录中,将选中的Texture剥离为rgb和alpha的更多相关文章

  1. 因为此控件已在 web.config 中注册并且与该页位于同一个目录中

    在web.config文件配置了用户控件 <pages> <controls> <add tagPrefix="my" tagName="l ...

  2. Word2003中如何使封面和目录中不插入页码

    Word2003中如何使封面和目录中不插入页码?? 转载自: http://blog.zzedu.net.cn/user1/zhaoweijie/archives/2010/187266.html   ...

  3. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新

    本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...

  4. python找递归目录中文件,并移动到一个单独文件夹中,同时记录原始文件路径信息

    运营那边有个需求. 下载了一批视频文件,由于当时下载的时候陆陆续续创建了很多文件夹,并且,每个文件夹下面还有子文件夹以及视频文件,子文件夹下面有视频文件或者文件夹 现在因为需要转码,转码软件只能对单个 ...

  5. Android sdk安装目录中没有platform-tools目录问题详解

    sdk下载地址 http://tools.android-studio.org/index.php/sdk 安装步骤很简单,百度即可. 下面详细说一下,在安装中遇到android sdk下没有plat ...

  6. Step by step 活动目录中添加一个子域

    原创地址:http://www.cnblogs.com/jfzhu/p/4006545.html 转载请注明出处 前面介绍过如何创建一个域,下面再介绍一下如何在该父域中添加一个子域. 活动目录中的森林 ...

  7. 【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中

    项目输出目录(bin/debug|release)中经常是这个样子: main.exemain.pdb a.dll a.xml b.dll b.pdb b.xml ... 其中xml是同名dll的注释 ...

  8. 79 umount-卸除目前挂在Linux目录中的文件系统

    Linux umount命令用于卸除文件系统. umount可卸除目前挂在Linux目录中的文件系统. 语法 umount [-ahnrvV][-t <文件系统类型>][文件系统] 参数: ...

  9. linux复制指定目录下的全部文件到另一个目录中

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

随机推荐

  1. 如何解决loss NAN的问题

    问题 如上图所示,第二次迭代时出现NAN值,nan表示无穷大或者非数值,一般是在一个数除以0或者log(0)时会出现无穷大.可能的原因有:1)学习率过大:2)batch过大:3)不当的损失函数等. 试 ...

  2. 北京大学Cousera学习笔记--2-计算导论与C语言基础-第一讲.计算机的基本原理-图灵机

    有限状态读写头从一个初始状态开始,对存储器上的输入数据进行读或写操作,经过有限步操作之后停机,此时存储器上的输出数据就是计算结果 (1) 图灵机的构成: 1.一条存储带:双向无限延长:上有一个个的小方 ...

  3. Flask-Script

    其实本章就是为下一章做的铺垫啦,但是也要认真学习哦 Flask-Script 从字面意思上来看就是 Flask 的脚本 Django的启动命令是:python manager.py runserver ...

  4. 信步漫谈之Git—环境搭建及入门

    一.初识Git Git是一套优秀的分布式版本控制系统(区别于SVN和CVS,这两者是集中式版本控制系统).分布式和集中式版本控制系统的区别:1)集中式版本控制系统:版本库是集中存放在中央服务器的,而干 ...

  5. volatile CAS区别

  6. dedecms自定义模块流程

    dedecms的自定义模块   1.在dedecms主目录下创建一个模块目录 2.在模块目录下创建如下目录 1 2 3 4 5 6 7 8 9 10 网站根目录/     |-自定义模块        ...

  7. zigbee组网函数的一些用法

    1.NLME_PermitJoiningRequest(0)  :(1)值0x00:表示禁止加入网络  (2)值0x01-0xFE:表示允许链接的秒数 (3) 值0xff:表示启用网络 同时此函数:是 ...

  8. 文件下载的ie11兼容性优化

    在 http://www.cnblogs.com/sunshine6/p/8296945.html 中有说关于前后端分离时如何实现文件下载的功能,但是过完年回来,同事告诉我这个方式在ie11上存在不兼 ...

  9. MyBatis笔记(二) 最简单的insert命令

    接上一篇随笔.这里没有用到MyBatis最关键的映射器接口,因此只做个简单的insert操作,update和delete同理,就不再赘述了. 直接上代码: 首先是dao包下的UserDAO.java文 ...

  10. git+webpack项目初始化<一>

    目录结构 src + page view image service util git初始化 linux常用命令 rm -rf mmall-fe/ 删除 mkdir mmall-fe 创建文件夹 ls ...