我想问的是,是否可以将首选项保存在统一编辑器中,并在构建项目时使用它们,并从其他平台访问它们。
例如,我设置了n=5,然后在统一编辑器中使用playerprefs保存它,然后在构建项目时在其他平台上获取相同的整数。
是否有可能解决这类问题?
发布于 2018-01-04 23:26:10
听起来,您想要的是将数据(示例中的n值)转换为构建中的资产。
PlayerPrefs不适合您的需要,因为它没有在构建时创建可以在运行时加载的资产。相反,它用于将运行时生成的数据序列化到用户的设备上,并跨应用程序会话使用(我指的是从启动到退出应用程序的时间)。
我的建议是找到某种方法将您的数据序列化为Unity可以读取的资产。至少有两种方法可以做到这一点:
ScriptableObject。ScriptableObject是从UnityEngine.Object继承的类,用于将数据序列化为资产。下面是一个简单的例子:
CreateAssetMenu("my_data.asset","My Data")公共类数据: ScriptableObject { SerializeField私有int _n;SerializeField私有字符串_someString;public int N{ get {返回_n;}公共字符串SomeString { get {返回_someString;}
通常的用法是定义继承自Data的数据类,比如ScriptableObject。然后,将所需的数据作为序列化字段(此处为_n和_someString )放入其中。属性CreateAssetMenu用于在团结编辑器中创建菜单项,以便您创建资产。
完成此操作后,您可以使用MonoBehaviour中的数据,方法是通过标记为[SerializeField]的字段引用数据,就像其他任何统一资产(比如材料或精灵)一样:
公共类SomeMono : MonoBehaviour { SerializeField私有数据_data;void (){ Debug.Log("Data.SomeString is“+ _data.SomeString);}TextAsset格式读取数据。下面是一个示例:
公共类SomeMono2 : MonoBehaviour { SerializeField私有TextAsset _text;void (){ //假设数据只是一个普通的字符串序列。//但是,它可能是您喜欢的任何文本数据。Debug.Log(_text.text);//或您可以将数据序列化为字节// byte[] byteData = _text.bytes }
请注意,统一只自动标识扩展名为txt的文件(或者json?(不太确定这个)作为文本资产。发布于 2018-01-04 21:08:37
听起来您最好使用JSON并序列化您的数据。在桌面中,统一将PlayerPrefs保存到注册表中。在Android中,它被保存到一个清单文件中。换句话说..。不,PlayerPrefs不是一个跨平台的东西。此外,如果这是“保存-游戏”数据,您应该知道PlayerPrefs用于存储简单的数据,比如选项菜单。为了保存整个保存游戏文件,您需要使用一些更健壮的东西。
https://stackoverflow.com/questions/48103547
复制相似问题