开发平台:Unity
编程平台:Visual Studio 2020以上
使用语言:C#
问题描述
原译 | CreateAsset() should not be used to create a file within StreamingAssets folder. Path=‘Assets/StreamingAssets/ScriptableObject 1.asset’. This error will in a future release be changed to an exception. |
---|---|
现译 | 不应使用 CreateAsset() 在 StreamingAssets 文件夹中创建文件。Path=‘Assets/StreamingAssets/ScriptableObject.asset’。此错误将在将来的版本中更改为异常 |
注意:这是一个对于 Unity 资产结构认知不足所导致的问题。
相关问题的补充说明
Unity 为方便开发者管理工程资产信息,提供了 Assets 与 Package 两种目录的视图供开发者使用。其中 :
- Assets 主要集中管理 外部非标准化资产(自建资产、商店资产)的内容。
在这些资产被导入至编辑器中时,会转换成转服务于 Unity 引擎的特定资产,其特定信息存储至同路径下.meta
文件中以供 Unity 访问。 - Package 主要处理由 Unity 承认的官方工具包、第三方工具包资产信息。
例如 Package Manager 中的 Cinimachine、AR Foundation。当然,现版本下同时支持 Git URL 下载 Git 资源。通常这类资源被定义于提升开发效率的编辑扩展框架。
但考虑到实际开发过程中需求,Unity 提供了 Plugins、StreamingAssets 等特殊目录结果的文件夹。这些文件夹被允许出现在 Unity Project 视窗中,但仅局限于存放非 Unity 官方承认的自建资产信息。例如 ScriptableObject
这类自建资产。所以解决方法也随之明了。
’
解决方案
方案一:使用 Unity 承认的目录路径
- 在 Assets 目录下新建非特定目录的文件夹用以存放
ScriptableObject
资产。
方案二:使用 EXCEL\TXT\JSON\XML等数据文件替代SO资产(针对于PC用户的解决方法)
- 部分情况的开发,我们仅期望外部修改配置文件以达到实际需求时,应考虑使用 EXCEL 等第三方数据存储作为首选目标。
注意:若 SO 存储数据包含场景内预制体信息,则应适当考虑将 预制体相对路径信息写入配置表,以供调用。或考虑热更新实现该模块的数据更新。