重命名序列化字段

 一部分人可能知道,我们(unity)构建了大多数全新UI系统,并把它作为用户脚本。这表示Unity承受着大多来自我们用户界面的限制,尤其是要在Unity中开发系统并进行编辑器扩展。
        我们面临的其中一个问题是如何重命名字段,而用户也不必为此丢失数据。在我们的测试期间,我们想重构代码,也用不着破坏掉我们的beta用户项目。因此,用户就能继续测试每个新版本,而不必过多担心数据丢失和项目破坏。为了解决这个问题,我给大家推荐[FormerlySerializedAs]属性。
       您能做些什么?让我们看一些用例吧!
       变量重命名

        假设您有以下类:
[C#]  纯文本查看  复制代码
?
1
2
3
4
5
6
using UnityEngine;
class MyClass : MonoBehaviour
{
     [SerializeField]
     private string m_MyVariable;
}
        你想像m_ABetterName那样,把m_MyVariable重命名。但你不想让你的用户在所有的场景或预制中,为MonoBehaviour重新填充数据。目前,你可以完成如下内容:
[C#]  纯文本查看  复制代码
?
1
2
3
4
5
6
7
8
using UnityEngine;
using UnityEngine.Serialization;
class MyClass : MonoBehaviour
{
     [FormerlySerializedAs( "m_MyVariable" )]
     [SerializeField]
     private string m_ABetterName;
}

       封装公共的API
        在这种情况下,你将有个公共字段,它是你API中的一部分,但你想把它封装到访问器中。那么,我们假想有一个像这样的MyClass类:
[C#]  纯文本查看  复制代码
?
1
2
3
4
5
using UnityEngine;
class MyClass : MonoBehaviour
{
     public string myValue;
}
        在访问器中封装这个数值,而且在你资源中未丢失任何已存在的数据。你可以像下列代码操作:
[C#]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
using UnityEngine;
using UnityEngine.Serialization;
class MyClass : MonoBehaviour
{
     [FormerlySerializedAs( "myValue" )]
     [SerializeField]
     private string m_Value;
     public string myValue
     {
         get { return m_Value; }
         set { m_Value = value; }
     }
}

       多次重命名
        支持多次重命名字段,只需多次添加属性到每个字段的曾用名中。
[C#]  纯文本查看  复制代码
?
1
2
3
4
5
6
7
8
9
using UnityEngine;
using UnityEngine.Serialization;
class MyClass : MonoBehaviour
{
     [FormerlySerializedAs( "m_MyVariable" )]
     [FormerlySerializedAs( "m_ABetterName" )]
     [SerializeField]
     private string m_EvenBetterName;
}
       我何时可以删除属性呢?
        完成重命名后,当你已重新保存你全部的场景和资源,就可以删除属性。当然,这一操作暗示着你已“控制”了你的用户。譬如,就像资源商城的发行商一样,这种“控制”是不可能的。因此,这种情况下你将不得不处理它,确保在任意版本中的代码,用户都可以做到随时更新,而不必丢失数据。

希望这个全新小功能可以帮得上你!


文章转载自 重命名序列化字段,感谢OVATION提供好文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值