首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >统一存储只读数据的良好实践

统一存储只读数据的良好实践
EN

Stack Overflow用户
提问于 2020-08-12 20:55:16
回答 3查看 1.9K关注 0票数 2

我正在制作一本视觉小说,我的游戏使用一些自定义类来存储重要数据。

示例:

代码语言:javascript
代码运行次数:0
运行
复制
public class Speech
 {
     public Sprite CharacterHead; // Holds a reference to a sprite which is the "head" of who's currently speaking 
     public LocalizedString SpeechOrigin; // Holds a reference to a localizedstring that is what that character is saying based on the language. (Uses Unity.Localization)
     public string Name; // the name of the character that is speaking
 }

这个“语音”类不应该在运行时被更改,只需要在对话过程中被读取。

我的问题是:存储这类数据的一般良好实践方法是什么?我对统一性相当陌生,唯一能做到这一点的方法就是声明一个单行为类的列表,并通过检查器编辑它们,但这似乎并不是在一个有1000+不同“演讲”的游戏中处理这个问题的有效方法。

Ps:不要介意所有的变量都是公开的,它们现在是这样使开发的某些部分变得更容易,我会在时机成熟时改变必要的部分。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-13 00:56:34

有几种很好的方法来存储这些信息,特别是如果你也在本地化它们的话。本质上,您将存储引用各种字符串的ID,该ID将是跨语言文件的常量。

  1. CSV格式文件

基本上,您可以使用一些电子表格软件(比如Google ),并将所有的演讲都放在那里;一个列表示字符串的ID,一个列表示实际值。您可以将工作表导出为CSV文件,并将其加载到Unity中。然后,您可以编写一些简单的解析代码来读取文件中的每一行,然后将ID和值拆分,并将其存储在字典中。

  1. JSON格式文件

使用JSON,如果您正确地构建了JSON,您可以使用在JSON实用程序中构建的Unity或其他更好的工具直接将数据读入C#对象类中。一段解释这一点的像样视频可以在这里上找到。

  1. YAML格式文件

YAML与JSON基本相同,但括号较少。它也是统一用于序列化的格式。但是,您只能通过编写自己的解析器或使用第三方解析器来使用这种格式,因为没有内置的解析器。

目前,JSON文件通常是数据存储的行业标准,但最终取决于您认为最容易使用哪种格式。我试着按照从文件中添加和删除字符串的简单程度来列出这些字符串。

票数 1
EN

Stack Overflow用户

发布于 2020-09-17 15:44:55

你为什么不直接使用ScriptableObject呢?这是统一在游戏中存储数据的默认方式。您也可以从Unity编辑它,而不是使用其他外部编辑器。你也可以拖放任何资源从游戏项目的文件夹到它(例如。头部的纹理,整个局部的刺痛数据,对话音频剪辑等)

https://docs.unity3d.com/Manual/class-ScriptableObject.html

https://youtu.be/aPXvoWVabPY

票数 2
EN

Stack Overflow用户

发布于 2020-08-13 00:45:50

--您不应该在c#代码中存储大量数据--使用为数据设计的外部文件,方法是创建JSON文件、XML文件或任何其他类型的人和计算机可读的格式。

XML应该是您使用的最佳选择,它广泛用于对话树。

下面是您可以在usecase中使用XML的一个示例

代码语言:javascript
代码运行次数:0
运行
复制
<npcs>
  <npc name="Oren">
    <dialogue>
      <text>Hi #{PlayerName} do you want to eat falafel? </text>
      <options>
        <option action="yes">yes, I would like</option>
        <option action="no">no...</option>
      </options>
    </dialogue>
  </npc>
</npcs>

使用XML相当简单,非常适合对话

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63384593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档