专属撩妹开发之AssetsBundle更新游戏场景内容

2024-01-21 19:50

本文主要是介绍专属撩妹开发之AssetsBundle更新游戏场景内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
//using UnityEngine.Networking;
//如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
//https://www.cnblogs.com/IlidanStormRage/p/6102279.html
//有个小想法专属妹子APP,如果想要直接更换APP里面的内容。服务器这边之前更换AssetsBundle包就直接加载新场景
//新场景怎么设计都可以
public class LoadAssetsBundles : MonoBehaviour {string path1;string path2 ;string path3;string path4;Texture texture;public static string version = "version1";void Start(){//需要在这里赋值path1 = "Assets/AssetsBundles/object.unity3d";//包内容一个Cube和Sphere预设   包名+后缀path2 = "Assets/AssetsBundles/material.unity3d";//包内容一个材质球path3 = "Assets/AssetsBundles/texture.assetsbundle";//包内容一张名为timg的图片path4 = "Assets/AssetsBundles/scene.unity3d";//包内容  一个场景StartCoroutine(StartAB());}// Use this for initializationIEnumerator StartAB () {//第一种方式从内存中加载AB包#region 异步加载//异步加载// AssetBundleCreateRequest request = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path1));// yield return request;// //加载共同依赖资源,如贴图  材质// AssetBundleCreateRequest request2 = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path2));// yield return request2;// AssetBundleCreateRequest request3 = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path3));// yield return request3;// AssetBundleCreateRequest request4 = AssetBundle.LoadFromMemoryAsync(File.ReadAllBytes(path4));// yield return request4;// AssetBundle ab = request.assetBundle;//获取包// AssetBundle ab2 = request2.assetBundle;//获取包// AssetBundle ab3 = request3.assetBundle;// AssetBundle ab4 = request4.assetBundle;// //使用里面的资源// GameObject cube = ab.LoadAsset<GameObject>("Cube");// GameObject sphere = ab.LoadAsset<GameObject>("Sphere");//  texture = ab3.LoadAsset<Texture>("timg");//获取图片// Debug.Log(texture.width + texture.height+texture.name);// //场景中新建一个RawImage// GameObject.Find("Canvas/RawImage").GetComponent<RawImage>().texture = texture;// //获得场景包之后可以直接//SceneManager.LoadScene("AssetBundleScene");// Instantiate(cube);// Instantiate(sphere);#endregion//下载软件 MyWebServer服务器 https://www.cnblogs.com/IlidanStormRage/p/6102279.html#region 同步加载WWW www = new WWW("http://192.168.0.70/scene.unity3d");yield return www;WWW www1 = new WWW("http://192.168.0.70/1.jpg");yield return www1;WWW www2 = new WWW("http://192.168.0.70/version.txt");//版本号   注意txt的格式需要为ASCII格式yield return www2;//版本号的确认if (www2!=null){//版本不一致才需要更新if (www2.text!= version){if (www1 != null){//更新图片texture = www1.texture;GameObject.Find("Canvas/RawImage").GetComponent<RawImage>().texture = texture;}else{Debug.Log("666");}AssetBundle ab1 = www.assetBundle;if (ab1 != null){//加载新场景(初始场景)SceneManager.LoadScene("AssetBundleScene");}//记录当前版本version = www2.text;}else{Debug.Log("版本跟最新版保持一致不需要更新");}}#endregionStopAllCoroutines();}// Update is called once per framevoid Update () {}
}

这篇关于专属撩妹开发之AssetsBundle更新游戏场景内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/630645

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja