# 从 1.X 升级到 2.X

## 新功能 <a href="#new-features" id="new-features"></a>

您可以从这篇博客文章中了解到该资源已改进 *很多* 从 1.X 版本到 2.X 版本，从编辑模式预览到新的打字机、效果架构等等更多内容。<br>

目标是使该资源 *更加 **灵活*** 并且易于使用，功能强大，同时也使其更具面向未来的能力（例如单元测试），并能更频繁地更新以及更多内容。\
因此，在 Text Animator 1.X 发展了 3 年多之后，我几乎为 2.X 版本完全重写了该资源，我非常期待看到大家用它创造出的内容！

{% hint style="success" %}
您可以实现与 1.X 相同甚至更多的功能。
{% endhint %}

## 更新 <a href="#updating" id="updating"></a>

如果您的项目以前从未使用过 Text Animator 1.X，则可以直接安装最新版本。

也就是说，如果您的项目已经使用了 1.X 并且希望升级到 2.X，则需要执行“干净安装”（即先删除插件文件夹，然后导入新版本的文件夹）。请在此操作前进行备份。<br>

完成这些之后……对于像这样的大更新，并没有适用于每个项目的通用解决方案。下面列出了一些常见场景，但如有需要，随时联系支持，我们很乐意在更新过程中为您提供帮助。<br>

### 架构 <a href="#architecture" id="architecture"></a>

Text Animator 2.X 的主要变化是效果和操作现在作为 ScriptableObject 存储。\
这意味着您可以在游戏的多个脚本/组件中引用它们，独立于 Text Animator 组件，并在项目与文本之间实现更多交互（例如，当玩家靠近某个目标时应用某个效果）。<br>

### API <a href="#apis" id="apis"></a>

我已尽力使更新过程尽可能顺畅，因此如果您使用的一些 API 现在已更改，您会看到它们被标记为已过时并可以及时修复。也就是说，如果您创建了自定义脚本（作为自定义效果、操作或打字机），您可能需要手动调整一些内容，例如类引用和方法。

请记住，效果和操作现在作为 ScriptableObject 存储，因此您的类也必须转换为它们：

* [bian-xie-zi-ding-yi-xiao-guo-c](https://docs.febucci.com/text-animator-unity/2.x-zh/xiao-guo/chuang-jian-ni-zi-ji-de-xiao-guo/bian-xie-zi-ding-yi-xiao-guo-c "mention")
* [bian-xie-zi-ding-yi-da-zi-ji-c](https://docs.febucci.com/text-animator-unity/2.x-zh/tong-guo-c-jin-xingewai-zi-ding-yi/bian-xie-zi-ding-yi-da-zi-ji-c "mention")
* [bian-xie-zi-ding-yi-dong-zuo-c](https://docs.febucci.com/text-animator-unity/2.x-zh/tong-guo-c-jin-xingewai-zi-ding-yi/bian-xie-zi-ding-yi-dong-zuo-c "mention")

可能的错误：

* “Febucci.UI.Core.TAnimBuilder.InitializeGlobalDatabase()” -> 此方法已被移除。您可以安全地从代码中删除它，因为不再需要。
* “Febucci.UI.TextAnimatorPlayer” -> 已重命名为 “Febucci.UI.TypewriterByCharacter”。您也可以使用 Febucci.UI.Core.TypewriterCore 作为抽象类。
* “Febucci.UI.TextAnimator” -> 已重命名为 “Febucci.UI.TextAnimator\_TMP”。您也可以使用 Febucci.UI.Core.TAnimCore 作为抽象类。

### 内置效果值 <a href="#built-in-effects-values" id="built-in-effects-values"></a>

由于效果现在为 ScriptableObjects，如果您在 1.X 中更改了内置值，则需要在此新版本中重新分配它们（例如振幅、速度等），以匹配您项目之前的效果。如果您没有更改，则应该可以直接在 2.X 中看到相同的结果。\
如果您使用“BuiltInScriptableObject”来存储值，我正在开发一个“更新脚本”来在 2.X 中匹配这些值。敬请关注！

### 其他 <a href="#extras" id="extras"></a>

如果您遇到不同的情况，请与我们联系！我们很乐意在更新过程中为您提供帮助，并将这些情况添加到此页面以供将来参考。

**感谢您，祝您玩得愉快！**
