unity 通过resouce加载图片_Unity Resources资源打包以及加载(一)

本文介绍了如何在Unity中使用Editor脚本来创建AssetBundles,包括查找依赖项、按类型分类打包,并针对不同资源类型创建不同的AssetBundle,最后针对Android平台进行打包。同时,文章还包含了版本文件的写入操作。
摘要由CSDN通过智能技术生成

using UnityEngine;

using System.Collections;

using UnityEditor;

using System.IO;

using System.Collections.Generic;

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();

//获取在Project视图中选择的所有游戏对象

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

//var game =   Selection.gameObjects;

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)

{

//strArraty[i] = AssetDatabase.GetAssetOrScenePath(SelectedAsset[i]);

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、付费专栏及课程。

余额充值