Unity 游戏框架搭建 :弃用的代码删除

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

示例十

代码如下
    
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 ) ; } } }
删除的步骤如下:
  1. 对方法的名称,进行引用搜索,IDE 里一般右键会有个 Find Refenreces/Usages,大概这样的,如果有的话,就逐个进行解决。
  2. 对方法的名称,进行全局文本搜索,一般在 IDE 里快捷键是 cmd/ctrl + shift + F,如果不是可以自己搜一下。经过步骤 1 之后,在执行本操作,结果很可能是在宏定义里的引用,这时候就需要用肉眼去检查了,看看是不是最新的方法,如果不是就更新。
每一个弃用的方法我们都要这样一个一个去解决。
解决按之后代码如下:
    
# 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 ) ; } } }
第十个示例解决了。

示例八

使用以上的步骤,整理后的示例代码如下:
    
# if UNITY_EDITOR using UnityEditor ; # endif using UnityEngine ; using System ; using System . IO ; namespace QFramework { public class CommonUtil { public static void CopyText ( string text ) { GUIUtility . systemCopyBuffer = text ; } } public class Exporter { public static string GenerateUnityPackageName ( ) { return "QFramework_" + DateTime . Now . ToString ( "yyyyMMdd_hh" ) ; } } public class EditorUtil { # if UNITY_EDITOR public static void CallMenuItem ( string menuPath ) { EditorApplication . ExecuteMenuItem ( menuPath ) ; } public static void OpenInFolder ( string folderPath ) { Application . OpenURL ( "file:///" + folderPath ) ; } public static void ExportPackage ( string assetPathName , string fileName ) { AssetDatabase . ExportPackage ( assetPathName , fileName , ExportPackageOptions . Recurse ) ; } # endif } public class PreviousFunctions : MonoBehaviour { # if UNITY_EDITOR [ MenuItem ( "QFramework/8.总结之前的方法/1.获取文件名" ) ] private static void MenuClicked ( ) { Debug . Log ( Exporter . GenerateUnityPackageName ( ) ) ; } [ MenuItem ( "QFramework/8.总结之前的方法/2.复制文本到剪切板" ) ] private static void MenuClicked2 ( ) { CommonUtil . CopyText ( "要复制的关键字" ) ; } [ 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" ) ; } [ MenuItem ( "QFramework/8.总结之前的方法/5.打开所在文件夹" ) ] private static void MenuClicked5 ( ) { EditorUtil . OpenInFolder ( Application . dataPath ) ; } [ MenuItem ( "QFramework/8.总结之前的方法/6.MenuItem 复用" ) ] private static void MenuClicked6 ( ) { EditorUtil . CallMenuItem ( "QFramework/8.总结之前的方法/4.导出 UnityPackage" ) ; EditorUtil . OpenInFolder ( Path . Combine ( Application . dataPath , "../" ) ) ; } # endif } }
是不是感觉清爽了很多?哈哈哈。

示例十一

整理之后代码如下:
    
using System ; # if UNITY_EDITOR using UnityEditor ; # endif using UnityEngine ; namespace QFramework { public class TransformSimplify { /// <summary> /// 重置操作 /// </summary> /// <param name="trans">Trans.</param> public static void Identity ( Transform trans ) { trans . localPosition = Vector3 . zero ; trans . localScale = Vector3 . one ; trans . localRotation = Quaternion . identity ; } public static void SetLocalPosX ( Transform transform , float x ) { var localPos = transform . localPosition ; localPos . x = x ; transform . localPosition = localPos ; } public static void SetLocalPosY ( Transform transform , float y ) { var localPos = transform . localPosition ; localPos . y = y ; transform . localPosition = localPos ; } public static void SetLocalPosZ ( Transform transform , float z ) { var localPos = transform . localPosition ; localPos . z = z ; transform . localPosition = localPos ; } public static void SetLocalPosXY ( Transform transform , float x , float y ) { var localPos = transform . localPosition ; localPos . x = x ; localPos . y = y ; transform . localPosition = localPos ; } public static void SetLocalPosXZ ( Transform transform , float x , float z ) { var localPos = transform . localPosition ; localPos . x = x ; localPos . z = z ; transform . localPosition = localPos ; } public static void SetLocalPosYZ ( Transform transform , float y , float z ) { var localPos = transform . localPosition ; localPos . y = y ; localPos . z = z ; transform . localPosition = localPos ; } } public class TransformIdentity : MonoBehaviour { # if UNITY_EDITOR [ MenuItem ( "QFramework/11.Transform 归一化" ) ] # endif private static void MenuClicked ( ) { var transform = new GameObject ( "transform" ) . transform ; TransformSimplify . Identity ( transform ) ; } } }

示例十二

整理之后代码如下:
    
using System ; # if UNITY_EDITOR using UnityEditor ; # endif using UnityEngine ; using Random = UnityEngine . Random ; namespace QFramework { public class MathUtil { /// <summary> /// 输入百分比返回是否命中概率 /// </summary> public static bool Percent ( int percent ) { return Random . Range ( 0 , 100 ) <= percent ; } } public class PercentFunction : MonoBehaviour { # if UNITY_EDITOR [ MenuItem ( "QFramework/12.概率函数" ) ] # endif private static void MenuClicked ( ) { Debug . Log ( MathUtil . Percent ( 50 ) ) ; } } }
到目前为止,我们把所有的弃用的方法全部删除了。
全部删除之后,笔者的心情轻松了很多。

小结

当前的状态如下:
  1. 要做的事情:
  • (完成) 备份:导出文件,并取一个合理的名字。
  1. 遗留问题:
  • (完成) 第八个示例与之前的示例代码重复,功能重复。
  • (完成) 方法所在类的命名有问题。
  • 菜单栏显示顺序问题。
  • (完成) 弃用的代码警告
  1. 约定和规则:
  • 每个示例在 QFramework 目录下创建一个文件夹,文件夹的格式是: 数字.示例的功能
  • 每个示例写一个脚本,脚本中包含可复用的静态方法和 MenuItem 方法。
  • 每写一个示例进行一次导出,导出的文件名后边加上日期和时间,这个功能已经在导出功能里内置了。
  • 每次有 API 变更的时候做一次备份,备份的名字采用 QFramework_vX.Y.Z 格式。
  • 每次进行整理的时候要确保是在功能有效的情况下进行删除和变更。
  • 在删除弃用代码的步骤:
  1. 消除弃用警告。
  2. 搜索弃用方法的引用,并逐个升级为最新的方法。
  3. 全局搜索方法名,并根据情况逐个升级为新的方法。
  4. 示例分类:
  5. 知识学习&收集
  • API 收集
  • C# 语法实践
  1. 库本身的功能
  • 规则实现
  • 使用流程提供及优化
  • 效率提升(编码体验、逻辑复用)
  • 项目实用工具收集
注意:在约定和规则部分,增加了删除弃用代码的步骤。
今天内容就这些,我们在下篇接着整理。
转载请注明地址:凉鞋的笔记: liangxiegame.com

更多内容

  • QQ 交流群: 623597263
  • Unity 进阶小班 :
  • 主要训练内容:
  • 框架搭建训练(第一年)
  • 跟着案例学 Shader(第一年)
  • 副业的孵化(第二年、第三年)
  • 权益、授课形式等具体详情请查看 《小班产品手册》 :https://liangxiegame.com/master/intro
  • 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值