Unity 游戏框架搭建 2019 (二十七、二十八)弃用的代码警告解决&弃用的代码删除

在前两篇,我们把所有的示例重头到尾整理了一遍。

当前的状态如下:

要做的事情:

(完成) 备份:导出文件,并取一个合理的名字。

遗留问题:

(完成) 第八个示例与之前的示例代码重复,功能重复。

(完成) 方法所在类的命名有问题。

菜单栏显示顺序问题。

用的代码警告

约定和规则:

每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能

每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。

每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。

每次有 API 变更的时候做一次备份,备份的名字采用 QFramework_vX.Y.Z 格式。

每次进行整理的时候要确保是在功能有效的情况下进行删除和变更。

示例分类:

知识学习&收集

API 收集

C# 语法实践

库本身的功能

规则实现

使用流程提供及优化

效率提升(编码体验、逻辑复用)

项目实用工具收集

我们看下以上遗留问题里,示例重复这个做完了,还差一个菜单栏显示顺序问题,还有一个弃用的代码的警告。

两个看起来,弃用代码的警告马上就有思路了,就只要保证功能正确的情况下重写代码就好了。

我们看下编辑器的弃用代码警告:

006tNc79gy1fzfr7gy35wj30mq0dmwgz.jpg


目前有 5 个警告,主要集中在示例 7 和把中。我们一项一项解决。

先看示例七的代码:

using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/7.自定义快捷键 %e")] private static void MenuClicked() { var generatePackageName = PreviousFunctions.GenerateUnityPackageName(); PreviousFunctions.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); PreviousFunctions.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }

很容易改。改完之后的代码如下:

using System.IO; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class CustomShortCut : MonoBehaviour { #if UNITY_EDITOR [MenuItem("QFramework/7.自定义快捷键 %e")] private static void MenuClicked() { var generatePackageName = Exporter.GenerateUnityPackageName(); EditorUtil.ExportPackage("Assets/QFramework",generatePackageName + ".unitypackage"); EditorUtil.OpenInFolder(Path.Combine(Application.dataPath, "../")); } #endif } }

之后编译后的结果如下所示:

006tNc79gy1fzfr7jpozqj30mg0d240v.jpg


还剩两个,我们看下第 8 个示例的代码。

... public class PreviousFunctions { ... [MenuItem("QFramework/8.总结之前的方法/3.生成文件名到剪切板")] private static void MenuClicked3() { CommonUtil.CopyText(GenerateUnityPackageName()); } [MenuItem("QFramework/8.总结之前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { EditorUtil.ExportPackage("Assets/QFramework",GenerateUnityPackageName() + ".unitypackage"); } ... } ...

主要问题在 GenerateUnityPackageName,这个在整理第个示例的时候忘记了,改成如下代码就好了。

... public class PreviousFunctions { ... [MenuItem("QFramework/8.总结之前的方法/3.生成文件名到剪切板")] private static void MenuClicked3() { CommonUtil.CopyText(Exporter.GenerateUnityPackageName()); } [MenuItem("QFramework/8.总结之前的方法/4.导出 UnityPackage")] private static void MenuClicked4() { EditorUtil.ExportPackage("Assets/QFramework",Exporter.GenerateUnityPackageName() + ".unitypackage"); } ... } ...

这样编译警告就没有了。

警告的问题全部解决了,弃用的方法就全部可以删掉了,因为弃用的方法,只要被调用了才会报警告,但是在删除弃用方法的时候要小心一点,因为弃用的方法有可能是在某个宏里边调用的,这时候最好用一下 IDE 的全局搜索字符串,一般 IDE 都会有,怎么用,自己用搜索引擎查一下就行了。

我们在这篇把所有的弃用代码删除掉。

示例十

代码如下

using System; #if UNITY_EDITOR using UnityEditor; #endif using UnityEngine; namespace QFramework { public class TransformLocalPosImprovements { #if UNITY_EDITOR [MenuItem("QFramework/10.Transform 赋值优化")] #endif private static void GenerateUnityPackageName() { var transform = new GameObject("transform").transform; TransformSimplify.SetLocalPosX(transform, 5.0f); TransformSimplify.SetLocalPosY(transform, 5.0f); TransformSimplify.SetLocalPosZ(transform, 5.0f); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosX(Transform transform, float x) { TransformSimplify.SetLocalPosX(transform, x); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosY(Transform transform, float y) { TransformSimplify.SetLocalPosY(transform, y); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosZ(Transform transform, float z) { TransformSimplify.SetLocalPosZ(transform, z); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosXY(Transform transform, float x, float y) { TransformSimplify.SetLocalPosXY(transform, x, y); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosXZ(Transform transform, float x, float z) { TransformSimplify.SetLocalPosXZ(transform, x, z); } [Obsolete("方法已弃用,请使用 TransformSimplify")] public static void SetLocalPosYZ(Transform transform, float y, float z) { TransformSimplify.SetLocalPosYZ(transform, y, z); } } }

删除的步骤如下:

对方法的名称,进行引用搜索,IDE 里一般右键会有个 Find Refenreces/Usages,大概这样的,如果有的话,就逐个进行解决。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zywszy.html