- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
- 纳金币
- 38266
- 精华
- 111
|
分包加载- AssetbundleLoad.js脚本
-
- -------------------------------------------------------------
-
- var house : GameObject;
-
- var carpet : Object;
-
- var mirror : GameObject;
-
- var textures : GameObject;
-
- var mainobject : GameObject;
-
- var names : String;
-
- function Start()
-
- {
-
- var www=new WWW(“http://www.xxx.com/test/AssetBundle.unity3d”); //从服务器加载
-
- //var www=new WWW(“file:///C:/1/AssetBundle.unity3d”); //从本地加载,绝对路径
-
- yield www;
-
- //一起选择Room,Carpet和Mirror的Prefab后导出,那么Room会成为mainAsset ,其他的用AssetBundle.Load(“name”)来加载
-
- //mainobject=Instantiate(www.assetBundle.mainAsset);
-
- house=Instantiate(www.assetBundle.Load(“Room”));
-
- carpet=Instantiate(www.assetBundle.Load(“asd”)); //奇怪的是,就是它的名字不能写成carpet或者Carpet
-
- mirror=Instantiate(www.assetBundle.Load(“Mirror”));
-
- textures=Instantiate(www.assetBundle.Load(“Textures”));
-
- names=www.assetBundle.mainAsset.name;
-
- //www.assetBundle.Unload(false);
-
- renderer.material.mainTexture=textures.GetComponent(“abc”).A;
-
- }
-
- function Update ()
-
- {
-
- }
-
- ---------------------------------------------------------------------
-
- abc.js
-
- ----------------------------------------------------------------------
-
- var A: Texture2D;
-
- var B: Texture2D;
-
- var C: Texture2D;
-
- function Update ()
-
- {
-
- }
-
- ---------------------------------------------------------------------
-
- AssetbundleBuild.cs
-
- ---------------------------------------------------------------------
-
- /// <summary>
-
- /// Exports a player compatible AssetBundle containing the selected objects, including dependencies.
-
- /// </summary>
-
- /// <remarks>Editor scripts are removed from the exported Assets.</remarks>
-
- using System.Collections.Generic;
-
- using System.IO;
-
- using UnityEditor;
-
- using UnityEngine;
-
- class AssetbundleEditor
-
- {
-
- [MenuItem(“Assets/Build AssetBundle”)]
-
- public static void ExportPlayerAssetBundle()
-
- {
-
- string tempRelativePath = “Assets/Temp/”;
-
- string tempAbsolutePath = Application.dataPath + “/../” + tempRelativePath;
-
- // Bring up save dialog.
-
- string path = EditorUtility.SaveFilePanel(“Save AssetBundle”, “”, “AssetBundle”, “unity3d”);
-
- if (path.Length > 0)
-
- {
-
- // Get all selected objects.
-
- Object[] selection = Selection.GetFiltered(typeof(Object), SelectionMode.DeepAssets);
-
- //Object[] processedSelection = new Object[selection.Length];
-
- Object[] processedSelection=selection;
-
- for (int i = 0; i < selection.Length; i++)
-
- {
-
- // Clone the original object.
-
- Object currentObject = selection[i];
-
- bool isPrefab = currentObject != null && currentObject.GetType() == typeof(GameObject);
-
- if (isPrefab)
-
- {
-
- if (!Directory.Exists(tempAbsolutePath))
-
- Directory.CreateDirectory(tempAbsolutePath);
-
- // Remove unneeded scripts from the prefab.
-
- /*
-
- Object clonedPrefab = EditorUtility.CreateEmptyPrefab(string.Format(“{0}{1}.prefab”, tempRelativePath, currentObject.name));
-
- if (clonedPrefab != null)
-
- {
-
- clonedPrefab = EditorUtility.ReplacePrefab((GameObject)currentObject, clonedPrefab);
-
- //EditorBase component = ((GameObject)clonedPrefab).GetComponent(typeof(EditorBase)) as EditorBase;
-
- UnityEditor component = ((GameObject)clonedPrefab).GetComponent(typeof(UnityEditor)) as UnityEditor;
-
- if (component != null)
-
- GameObject.DestroyImmediate(component, true);
-
- EditorUtility.SetDirty(clonedPrefab);
-
- processedSelection[i] = clonedPrefab;
-
- }
-
- */
-
- }
-
- }
-
- // Save changes to AssetDatabase and import processed prefabs.
-
- EditorApplication.SaveAssets();
-
- AssetDatabase.Refresh();
-
- // Export the processed AssetBundle.
-
- BuildPipeline.BuildAssetBundle(Selection.activeObject, processedSelection, path, BuildAssetBundleOptions.CollectDependencies | BuildAssetBundleOptions.CompleteAssets);
-
- Selection.objects = selection;
-
- // Remove all cloned objects from the project.
-
- for (int i = 0; i < processedSelection.Length; i++)
-
- {
-
- if (processedSelection[i] != null)
-
- AssetDatabase.DeleteAsset(string.Format(“{0}{1}.prefab”, tempRelativePath, processedSelection[i].name));
-
- }
-
- if (Directory.Exists(tempAbsolutePath))
-
- Directory.Delete(tempAbsolutePath, false);
-
- }
-
- }
-
- }
复制代码 |
|