m0_37471675 2017-04-02 12:32 采纳率: 0%
浏览 1300

unity项目最后的资源优化

我们现在的项目是一个单机的,但是老大要我负责资源打包,我这之前也没弄过啊,想问问大神们,怎么弄得,我就想知道resources文件夹下面的资源需要弄成assetsBundle吗,,关键是代码中要是用到了resources.load这怎么解决,最主要的是,我把那些资源打包后放在那个文件夹下面,后面是不是玩家第一次运行游戏就把Bundle解包,,我们是单机的项目,我就是不知道他的流程是咋回事,大神们救救我

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 16:21
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Unity 3D中,为资源(如材质、模型、动画等)进行资源打包(Assets Bundle)通常是通过以下步骤实现的:

    1. 创建资产目录:首先,你需要在Unity项目根目录下创建一个名为Resources的子目录。例如,在你的项目的主目录下,你可以这样做:

      Resources/
      
    2. 添加资源包类型和内容: Unity引擎允许将不同类型的资源(如材料、模型、动画等)分类为不同的资产包。每个资产包通常包含所有对应文件,例如Materials包包含所有材质,Models包包含所有模型,Animations包包含所有动画。

      • Resources目录下,创建一个名为Materials.bas的AssetData.cs脚本。在AssetsBases部分创建一个新的基础包,其名称与你的项目名称相同。例如,如果你的项目名为MyGame, 创建如下脚本:
      public class MyGame_Audio : MonoBehaviour
      {
          //...
      }
      
      • 将其他需要打包的资源数据(如材质列表、动画映射表、纹理列表等)添加到这个基础包的对应类中,如AudioMaterialModelMeshTexture.
      public class MyGame_Models : MonoBehaviour
      {
          private List<Material> materials = new List<Material>();
          ...
      }
      
      public class MyGame_Animations : MonoBehaviour
      {
          private Dictionary<int, Animation[]> animations = new Dictionary<int, Animation[]>();
      
          //...
      }
      
    3. 配置Bundles内资源路径: 在Unity编辑器设置窗口,找到并勾选"Create assets bundle for this scene and all the subscenes in it"选项卡。这样,Unity会自动生成一个名为<YourProjectName>. Assets的assets-bundle.json文件,其中包含了所有与你当前场景关联的资源信息。

      Assets Bundle Settings

    4. 在Assets文件夹下创建“AssetBundle”扩展: 在Resources目录下创建一个名为AssetsBundle的文件夹。此文件夹将成为你的Bundles中的主要入口点,并包含相关资源包的数据。

      Resources/Assets/Bundles
      
    5. 将Bundles及其依赖关系关联到Unity项目: 在Unity工程管理器中,找到并右键点击项目名,选择"Add asset bundle to project". 从弹出菜单中选择"Assets Bundle",然后在弹出的对话框中将新资产包导入到项目中。

      Assets Bundle Import

    6. 安装Bundles后,更新项目设置: 打开Unity编辑器设置窗口,找到并勾选"Config" -> "Asset Bundles"选项卡,确保已经启用"Generate Asset Bundle URL for All Scenes"功能。这样,当你在编辑场景时,Unity会在所有相关的加载区域生成对应的URL,供外部浏览器下载或应用。

    7. 设置URL规则: 如果你需要特定URL去访问某个资产包,可以在Assets/Bundles/<YourProjectName>.assets/<ResourceName>.json的URL规则中定义一个跳转链接。例如:

      {
          "published": true,
          "prefix": "<YourProjectName>",
          "assetBundleUrl": "/<ResourceName>",
          "excludedAssets": ["<OtherAssetName>"]
      }
      

      注意:替换 <YourProjectName><ResourceName> 为实际项目名称和对应资产包的名称,"<OtherAssetName>" 替换为可能包含其他额外资产或设置的任何名称。

      • - published: 如果资源被发布为公开版本,prefix 可以省略。
      • - prefix: 设置资产包的前缀,避免与已有的基础包重名。
      • - assetBundleUrl: 资源包的URL路径,包括所对应的资源文件名。
      • - excludedAssets: 包含的不希望在这个资源包上加载的其他资源。
    8. 验证和测试: 在每次重新载入场景或发布新版本后,确保检查 Assets/Bundles 文件夹下的资源URL是否正确。如果有错误,您可以通过创建新的资源包、修改原始资源文件或更新Url规则来修复。

      对于单机项目,Unity通常不会手动解析这些URL,而是根据AssetBundle连接器进行链接。在Links部分编写相应的JSON代码来处理 URL 结合相应的资源文件,或使用网络请求工具,如NetFtp,将链接复制粘贴到特定位置。

    以上就是在Unity项目中优化资源输出的方法,具体的操作取决于你的项目需求和架构。记得定期更新资产包数据,并确保在发生冲突或资源丢失时能够快速定位和修复问题。

    评论

报告相同问题?