《搬砖日记》AssetsBundle实现资源更新及通过反射添加脚本

该随笔分两部分,第一部分 AssetsBundle实现游戏物体和代码的打包,第二部分游戏物体和代码的加载及通过反射添加脚本

一. AssetsBundle打包

1.在Assets中新建文件夹Editor,并在Editor中新建C#脚本,编写以下内容,

using UnityEditor;
using System.IO;

public class CreatAssetsBundle
{
    [MenuItem("AssetsBundle/Build AssetBundles")]
    static void BuildAllAssetBundles()//进行打包
    {
        string dir = "AssetBundles";
        //判断该目录是否存在
        if (Directory.Exists(dir) == false)
        {
            Directory.CreateDirectory(dir);//在工程下创建AssetBundles目录
        }
        //参数一为打包到哪个路径,参数二压缩选项  参数三 平台的目标
        BuildPipeline.BuildAssetBundles(dir, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
    }
}

此时Unity菜单栏中会多出

2.打开VS新建类库(我使用的是VS2015),注意使用 .NEt Framework3.5 高版本的Unity不支持

在项目中新建CubeTest.CS文件,将测试脚本内容编写进去

此时会发现有报错,是因为我们没有添加Unity类库的引用,右键引用为工程添加UnityEngine.dll引用,UnityEngine.dll引用在安装目录下的  /Unity/Editor/Data/Manager/UnityEngine.dll

然后生成解决方案,在输出栏中可以看到生成的解决方案的所在路径

我们将生成的.dll文件后缀名改为.bytes并将文件放入Unity项目中

3.项目中新建Cube并将Cube变成预制体,通过New 修改红框中的内容

修改ABTest.bytes,注意要和Cube预制体的一样

4.点击菜单栏中AssetsBundle/Build AssetBundles,这时会在 AssetBundles 文件夹中生成我们自己定义的assetbundle文件,其中 cubeab.ab是我们的资源文件, cubeab.ab.manifest文件是我们的配置文件,用记事本打开cubeab.ab .manifest文件,可以看到我们打包的预制体

到此为止预制体和代码的打包就完成了

二. AssetsBundle加载及通过反射添加脚本

1.将步骤一生成的 cubeab.ab和cubeab.ab.manifest文件放入本地服务器

2.新建Unity工程在空物体上添加 LoadAssetbundles.cs 脚本

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using System.Reflection;
using System;
using System.IO;
using System.Net;

public class LoadAssetbundles : MonoBehaviour
{
    IEnumerator Start()
    {
        //本地服务器assetbundle文件存放路径
        string path = "http://localhost/AssetBundle/cubeab.ab";
        //通过WWW加载assetbundle文件,1代表版本号
        WWW www = WWW.LoadFromCacheOrDownload(path, 1);
        yield return www;
        //取得www中的assetBundle
        AssetBundle ab = www.assetBundle;
        //将.bytes文件转化为TextAsset
        TextAsset text = ab.LoadAsset("ABTest.bytes", typeof(TextAsset)) as TextAsset;
        //转化为byte数组
        byte[] by = text.bytes;
        //通过反射获取CubeTest类
        Assembly am = Assembly.Load(by);
        Type type = am.GetType("CubeTest");
        //将assetBundle中的物体加载出来放入数组中
        GameObject[] obj = ab.LoadAllAssets<GameObject>();
        //在场景中生成assetBundle中的物体
        foreach (GameObject o in obj)
        {
            Instantiate(o);
        }
        //给生成的游戏物体添加 CubeTest脚本
        GameObject.Find("Cube(Clone)").AddComponent(type);
    }

}

3.运行Unity

原文地址:https://www.cnblogs.com/YorkZhao/p/10064163.html

时间: 2024-10-23 02:17:31

《搬砖日记》AssetsBundle实现资源更新及通过反射添加脚本的相关文章

《搬砖日记》Obi Rope插件的简单使用

今天介绍一个Unity绳子插件Obi Rope的简单使用 先分享一下插件: 链接:https://pan.baidu.com/s/1XQp3mYxTRfvXwsU_Z_9ILw 提取码:pw08 进入正题: 1.导入插件就不说了,导入后右键新建一个Obi Rope 2.通过Add control point可以增加绳子控制点,来改变绳子的形状 3.Material改变绳子的材质 4.生成绳子 Initialize可以生成绳子 Section thickness scale 改变绳子的粗细 UV

Java 后台管理开发框架!CURD 一键生成,再也不要重复搬砖了!

JavaWeb CURD 一键生成,再也不要重复搬砖了! JavaWeb CURD 一键生成再也不要重复搬砖了 主流技术框架 技术特色 代码片段 系统展示 高大上的登录界面 开发工具基本配置 CURD属性配置 CURD一键生成 角色编辑 微信设置 微信状态查看 树形演示实体 管理员列表 存储插件列表 二维码生成 获取方式 本文将给您介绍 AppAdmin 后台管理系统开发框架. AppAdmin后台管理系统开发框架是一套Java开发的整合了当前众多比较流行的Java后台开发框架的系统,使用H5响

OSChina 周五乱弹——世界读书日,读书搬砖两不误

又到周五了,距离放假时间,目测只有几个小时了,一周的工作日又要过去了. 想想我们从幼儿园到大学,至少要上学 18 年,加上工作几年,总会有一.两本特别的书. 这些书扮演着不同的角色,像是一段旅程,一份浪漫,一种神秘,一出喜剧.在昨天--世界读书日,广大的 OSCer 们 Show 了一下最喜欢的书籍(今天乱弹的亮点在后面) 第一波:技术类书籍 @绝地反击:#世界读书日,倡导全民阅读#<鸟哥的私房菜> @CMAD:#世界读书日,倡导全民阅读#<Linux从入门到精通> @绝地反击:#

近期找搬砖工地的总结

因为最近博主所在的公司被武汉一家公司收购了.然后愿意去武汉的就去武汉,不愿意去武汉的就只有就地解散了. 所以博主七月底就离职了,然后回老家呆了大半个月,然后又回到成都顶着三十多度的高温找工作. 中间也发生了很多曲折的事情,所幸还是很快找到工作了. 这次找工作最大的感受就是.Net的生态圈非常不好..Net方向的岗位大多集中在传统软件行业(例如军工,进销存等行业),互联网等新兴的公司招.Net的岗位屈指可数.而且还见到不少公司招.Net程序员进去把公司的系统都转向Java.遇到好几家都问我有没有兴

Android老司机搬砖小技巧

作为一名Android世界的搬运工,每天搬砖已经够苦够累了,走在坑坑洼洼的道路一不小心就掉坑里了. SDK常用工具类 Android SDK中本身就拥有很多轮子,熟悉这些轮子,可以提高我们的搬砖效率. android.text.TextUtils 字符串操作常用方法:isEmpty() ,join(),split()等 if(!TextUtils.isEmpty(text)){ //do something } android.webkit.URLUtil 链接相关常用方法:isHttpUrl(

搬砖--杭电校赛(dfs)

搬砖 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 4646    Accepted Submission(s): 1060 Problem Description 小明现在是人见人爱,花见花开的高富帅,整天沉浸在美女环绕的笙歌妙舞当中.但是人们有所不知,春风得意的小明也曾有着一段艰苦的奋斗史. 那时的小明还没剪去长发,没有信用卡没有她

[学姿势]实验室搬砖+node学习

这周开始进行收尾工作,我当然没有进行核心技术的开发,主要负责的是对web端进行展示上的修修补补,主要包括添加VLC播放器.rtsp视频流以及一些js细节. 1.VLC 全称为Video Lan Client,此播放器支持各种格式,在平台中主要作为播放实时视频的工具.首先找到VLC的wiki,webplugin一节中有快速上手的文字,学习一些播放控制的方法.对于web端,通过html的OBJECT标签在网页中加入播放器,在target属性中写入实时监控的视频即可.其中还有一些其他参数用来控制播放.

我是如何搬砖

1,审题,逻辑结构构思 [time:50%] 2,开始搬砖(搬砖<->调整),搬完 [time:30%] 3,整体代码复查 [time:5%] 4,功能自测,代码修改 [time:10%] 5,代码提交 6,代码修改,调试-- [time:0%-5%] 7,上线,本次搬砖完毕

OSChina 周二乱弹 —— 如何把搬砖事业放在心上

各位 OSCer 大家好,掐指一算,今天是星期二,刷牙洗脸吃个饭,又得去搬砖了. 这年头,有几个打工的像俺这样时时刻刻把搬砖事业挂在心上?? 有OScer说,美帝又出了高科技, 李察德-泰森[你真的可以做个钢铁侠]穿上美国雷神公司研制的外骨骼XOS-1,使用者能轻松将90公斤的重物连续举50-500次.而美国洛克希德·马丁公司推出的HULC助力系统还能让使用者背负100公斤重物行军,却毫无压力. 小小编马上就想到,以后搬砖更有力量了,挣钱会不会更多呢 说到挣钱,昨天有一群 OSCer 居然在晒工