【发布时间】:2022-09-21 17:23:50
【问题描述】:
我在 Unity 中创建了一个带有发射贴图的资产包,它在编辑器中运行良好,但是当我为移动设备构建时,除了发射贴图之外的所有东西都可以正常工作,但似乎发射贴图根本没有效果。这是创建资产包的代码,您可以在桌面上正常工作。
using UnityEditor;
using System.IO;
using UnityEngine;
public class CreateAssetBundles {
public static string assetBundleDirectory = "Assets/AssetBundles/";
[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles() {
//if main directory doesnt exist create it
if (Directory.Exists(assetBundleDirectory)) {
Directory.Delete(assetBundleDirectory, true);
}
Directory.CreateDirectory(assetBundleDirectory);
//create bundles for all platform (use IOS for editor support on MAC but must be on IOS build platform)
BuildPipeline.BuildAssetBundles(assetBundleDirectory,BuildAssetBundleOptions.None, BuildTarget.iOS);
AppendPlatformToFileName("IOS");
Debug.Log("IOS bundle created...");
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.Android);
AppendPlatformToFileName("Android");
Debug.Log("Android bundle created...");
RemoveSpacesInFileNames();
AssetDatabase.Refresh();
Debug.Log("Process complete!");
}
static void RemoveSpacesInFileNames() {
foreach (string path in Directory.GetFiles(assetBundleDirectory)) {
string oldName = path;
string newName = path.Replace(' ', '-');
File.Move(oldName, newName);
}
}
static void AppendPlatformToFileName(string platform) {
foreach (string path in Directory.GetFiles(assetBundleDirectory)) {
//get filename
string[] files = path.Split('/');
string fileName = files[files.Length - 1];
//delete files we dont need
if (fileName.Contains(".") || fileName.Contains("Bundle")) {
File.Delete(path);
} else if (!fileName.Contains("-")){
//append platform to filename
FileInfo info = new FileInfo(path);
info.MoveTo(path + "-" + platform);
}
}
}
}
【问题讨论】:
-
您确定资产包已正确加载吗?你设置手机了吗
BuildTarget? -
BuildTarget.Android已经设置
标签: unity3d assetbundle