首页 > 其他分享 >Unity的StreamAssets文件夹

Unity的StreamAssets文件夹

时间:2024-01-23 21:34:19浏览次数:32  
标签:mac StreamAssets Unity 文件夹 版本 沙盒

StreamAssets是一个特殊的文件夹,其中的内容在Unity打包的时候并不会被压缩,完整的带入包体

介绍

  在做一个根据可变配置进行操作的功能时,突然发现在windows中正常的功能在mac上失效了,而且还是部分mac失效。发现StreamAssets在mac某个版本以上就不支持写操作了,搜了一下网上的资料才发现,在设计上StreamAsset就应该是只读的(太太,你也不想游戏的配置被修改吧)而Windows仍然有着写的能力,才导致了这个bug的产生。

方案

  那如果我有一个默认配置,并且在游戏中想动态的修改它该怎么办呢。有一种解决方案是,当运行游戏的时候,将StreamAssets文件夹下需要写的内容复制一份到沙盒中Application.datapath,并对沙盒里的内容进行后续的读写操作,如果需要保存我们之前的操作,并不想覆盖,那就每次运行的时候先看沙盒中是否有该文件即可。

补充

  而在实际工程中还需要实现版本更新功能,比如多了新的配置字段或是需要直接清空内容的时候,我们可以选择在配置文件中添加一个版本号或者清理字段,如果沙盒版本低于Stream版本则进行更新操作或是清理操作。后续的学习中发现很多游戏都是有首包解压逻辑的,这样也可以减少包体的大小。

 

标签:mac,StreamAssets,Unity,文件夹,版本,沙盒
From: https://www.cnblogs.com/donkey9/p/17983451

相关文章

  • Git如何提交空的文件夹
    Git如何提交空的文件夹实测在仓库中,如果一个文件夹为空,即内部无文件,则无法正常被gitadd,而是被忽略。为了正常添加这类空的文件夹,需要:在空文件夹下新建文件.gitkeep,这样Git便会添加它。有个简单的脚本,可以批量添加空文件夹:#!/bin/bashmain(){fordin`find.-typed......
  • ILRuntime是如何与Unity互相调用的
    ILRuntime是一个跨平台CLR实现,它可以在多个平台上运行C#代码,包括Android、iOS、Windows、Linux等等。ILRuntime的实现方式是将C#代码编译成IL代码,然后在运行时通过JIT或AOT的方式将IL代码转换为机器代码,从而实现跨平台的效果。ILRuntime的主要功能包括热更新、动态加载、代码加密......
  • Unity 如何基于addressable来做资源管理
    一、什么是Addressable系统Addressable系统是Unity2018.3版本中推出的一种资源管理方案,它可以帮助我们更好地管理游戏中的资源。在以往的游戏开发中,我们通常使用Resources来进行资源加载,但是这种方式存在很多问题,比如加载速度慢、内存占用高等。Addressable系统可以解决这些问题......
  • Unity如何设计一个技能系统
    一、技能系统的设计思路技能系统是游戏中非常重要的一部分,因此在设计技能系统时需要考虑以下几个方面:对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。1.技能类型不同的游戏有不同的技能类型,例如魔......
  • Unity3D 协程的优缺点详解
    前言Unity3D是一款强大的游戏开发引擎,它提供了许多功能和工具,以帮助开发者创建高质量的游戏。其中一个非常重要的功能就是协程(Coroutine)。协程是一种特殊的函数,它可以在执行过程中暂停并在稍后的时间点继续执行。在本文中,我们将详细探讨Unity3D协程的优缺点,并提供一些技术详解和......
  • Unity:Couldn't open include file 'Packages/com.unity.render-pipelines.universal/S
    初学Shader,Unity报错↑,总之是找不到ulsl的Core文件,网上找的其他解决方案例如删除文件夹再生成或者改变shader的某些属性,但是根本找不到。最终找到原因是项目类型不同,要把传统3D升级成URP项目。解决办法:安装UniversalRP拓展1.在unity中打开需要升级的场景,SaveAs一份并打开该场......
  • WPF 使用CommunityToolkit.Mvvm实现Binding示例
    WPF在国内的发展一言难尽。属于那种死不死,活不活的状态。现在应用最多的场景就是上位机了。最近研究了一下WPF中重要的特性之一Binding。如果你没有学会它,基本WPF就没有学明白。研究Binding的时候,我也用了MVVM特性,这也是WPF必学的科目之一。我原来用的是MVVMLight。可是后来......
  • wpf 使用CommunityToolKit.Mvvm实现绑定验证
    接上一个文章,我们在上一个文章中使用CommunityToolKit.Mvvm写了绑定。我们在这篇文章中,写一下绑定验证。绑定验证在WPF系统中也是非常重要的一环。验证可以使得你的系统变得非常健壮。除非你的系统是游戏级别的自娱自乐级别。要么我都建议你加上验证。还是那句老话,写程序一定要......
  • Unity3D 触发器的触发原理详解
    Unity3D是一个强大的游戏开发引擎,它提供了丰富的功能和工具来帮助开发者轻松创建游戏。其中一个重要的功能就是触发器(Trigger),它可以用于检测游戏中的碰撞事件或者其他特定的触发条件,并在满足条件时触发相应的行为。本文将详细介绍Unity3D触发器的触发原理,并给出相应的技术详解和代......
  • Unity3D 游戏服务端哪些模块可以做成无状态详解
    Unity3D游戏服务端是指在使用Unity3D引擎开发的游戏中,负责处理与游戏客户端的通信以及游戏逻辑的服务器端。在设计游戏服务端时,有一种常见的设计模式叫做无状态模式。本文将详细介绍Unity3D游戏服务端哪些模块可以做成无状态,并给出技术详解和代码实现。对啦!这里有个游戏开发交流......