build unity 丢失_Unity3d防止材质贴图丢失解决办法

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEditor;

using System.IO;

public class CreateAssetBundle : Editor

static void FindDependencies(string strPath, List strPathList)

if (strPathList.Contains(strPath))

return;

else

strPathList.Add(strPath);

string[] strArrayDependencies = AssetDatabase.GetDependencies(strPathList[strPathList.Count - 1]);

foreach (var m in strArrayDependencies)

FindDependencies(m, strPathList);

return;

[MenuItem("Custom Editor/Create AssetBunldes Main")]

static void CreateAssetBunldesMain()

WriteVersion();

Caching.CleanCache();

List strPathList = new List();

Object[] SelectedAsset = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);

foreach (var n in SelectedAsset)

Debug.Log(AssetDatabase.GetAssetOrScenePath(n));

FindDependencies(AssetDatabase.GetAssetOrScenePath(n), strPathList);

string targetPath = Application.dataPath + "/StreamingAssets";

if (!Directory.Exists(targetPath))

Directory.CreateDirectory(targetPath);

AssetBundleBuild[] abBuilds = new AssetBundleBuild[6];

List strPrefab = new List();

List strModel = new List();

List strImage = new List();

List strShader = new List();

List strOther = new List();

List strMaterials = new List();

foreach (var p in strPathList)

string strCase = "null";

if (p.Contains("."))

strCase = p.Split('.')[1];

switch (strCase.ToLower())

case "prefab":

case "cs":

strPrefab.Add(p);

break;

case "fbx":

strModel.Add(p);

break;

case "shader":

strShader.Add(p);

break;

case "mat":

strMaterials.Add(p);

break;

case "png":

case "jpg":

case "tga":

case "psd":

strImage.Add(p);

break;

default:

strOther.Add(p);

break;

abBuilds[0].assetNames = strPrefab.ToArray();

abBuilds[0].assetBundleName = "assetBundlePrefab";

abBuilds[1].assetNames = strModel.ToArray();

abBuilds[1].assetBundleName = "assetBundleModel";

abBuilds[2].assetNames = strImage.ToArray();

abBuilds[2].assetBundleName = "assetBundleImage";

abBuilds[3].assetNames = strShader.ToArray();

abBuilds[3].assetBundleName = "assetBundleShader";

abBuilds[4].assetNames = strMaterials.ToArray();

abBuilds[4].assetBundleName = "assetBundleMaterials";

abBuilds[5].assetNames = strOther.ToArray();

abBuilds[5].assetBundleName = "assetBundleOther";

BuildPipeline.BuildAssetBundles(targetPath, abBuilds, BuildAssetBundleOptions.CollectDependencies, BuildTarget.Android);

AssetDatabase.Refresh();

static void WriteVersion()

StreamWriter sw = new StreamWriter(Application.streamingAssetsPath + "/version.txt");

string w = "1";

sw.Write(w);

sw.Close();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值