在前两篇,我们完成了第九个示例。为了完善第九个示例,我们复习了类的继承,又学习了泛型和 params 关键字。

我们已经接触了类的继承了。接触继承之前,把类仅仅当做是方法的集合,接触了继承之后,我们的类还可以使用继承来解决一些问题。

第十个示例

在 Unity 中,我们的脚本都往往继承自 MonoBehaviour,继承了之后我们就可以在脚本内编写很多功能。比如访问 transform/gameObject,再比如控制动画接收碰撞事件等等。另外我们继承了 MonoBehaviour 才能被作为脚本挂到 GameObject 上。

仅仅是通过继承,MonoBehaviour 的很多功能都能够进行复用。所以继承的一个作用就是代码复用。而我们知道方法也可以代码复用,泛型可以对结构进行复用。那么继承能是复用什么?

继承既能复用代码也能复用结构。不过术业有专攻,有的情况下使用方法进行复用更合理,有的情况下适用于泛型,当然也有适用继承的情况。

像 GameObjectSimplify 和 TransformSimplify,这两种方法集,目前其实通过继承来实现会更好一点。因为这两个类中的方法全部都是要传一个固定的对象进去的,比如 GameObjectSimiplify 的每个方法第一个参数都是 GameObject 参数,而 TransformSimplify 也是如此。他们使用起来也不是很方便。

使用代码如下:

GameObjectSimplify.Show(gameObject);
TriansformSimplify.Identity(transform);

可以看出都需要把所有的类名字全部打出来,而使用继承就会好很多。

我们先实现第十个示例代码,如下

MonoBehaviourSimplify.cs

using UnityEngine;namespace QFramework
{    public partial class MonoBehaviourSimplify : MonoBehaviour{public void Show(){GameObjectSimplify.Show(gameObject);}public void Hide(){GameObjectSimplify.Hide(gameObject);}public void Identity(){TransformSimplify.Identity(transform);}}public class Hide : MonoBehaviourSimplify{        private void Awake(){Hide();}#if UNITY_EDITOR[UnityEditor.MenuItem("QFramework/10.MonoBehaviour 简化", false, 11)]static void MenuClicked(){UnityEditor.EditorApplication.isPlaying = true;var gameObj = new GameObject("Hide");gameObj.AddComponent<Hide>();}
#endif}
}

MonoBehaviourSimplify 为了可以在之后的示例中进行扩展,所以加上了 partial 关键字。而其中的 Show、Hide 等方法这次没有使用 static 关键字,那么这种方法叫做成员方法。成员方法必须通过对象来调用。而有 static 关键字的叫做静态方法,静态方法必须通过类来调用。

示例就是代码中的 Hide 脚本。

而 MenuItem 中有一行代码:

UnityEditor.EditorApplication.isPlaying = true;

这行代码执行之后,UnityEditor 就会自动运行。

其他的都很简单,MenuItem 执行之后如下所示:

示例是正确的。

OK,这个示例就完成了。

菜单如下:

目录结构如下:

今天的内容就这些,我们接触了继承之后,又强化了一次继承的使用,这样我们之后每次写示例的时候会有很多设计工具选择。

到此呢,我们可以进行一次导出了。

我们下一篇再见,拜拜~

转载请注明地址:凉鞋的笔记:liangxiegame.com

更多内容

  • QFramework 地址:https://github.com/liangxiegame/QFramework

  • QQ 交流群:623597263

  • Unity 进阶小班

    • 主要训练内容:

      • 框架搭建训练(第一年)
      • 跟着案例学 Shader(第一年)
      • 副业的孵化(第二年、第三年)
    • 权益、授课形式等具体详情请查看《小班产品手册》:https://liangxiegame.com/master/intro
  • 关注公众号:liangxiegame 获取第一时间更新通知及更多的免费内容。

Unity 游戏框架搭建 2019 (四十二) MonoBehaviour 简化相关推荐

  1. Unity 游戏框架搭建 2019 (四十五) 独立的方法和独立的类

    我们在开始本示例之前,先整理出我们当前库中的代码类型. 工具方法:CommonUtil.GameObjectSimplify等. 类: MonoBehaviourSimplify. 静态方法中的方法全 ...

  2. Unity 游戏框架搭建 2019 (四十七) 集成到 MonoBehaviourSimplify

    还记得我们的简易消息机制是为了解决什么问题诞生的嘛? 是为了解决脚本间访问的问题. 我们回过头再看下 A 脚本如果想访问 B 脚本,使用消息机制,如何实现. 代码如下: public class A ...

  3. Unity 游戏框架搭建 2018 (四) 我所理解的框架

    前言 架构和框架这些概念听起来很遥远,让很多初学者不明觉厉.会产生"等自己技术牛逼了再去做架构或者搭建框架"这样的想法.在这里笔者可以很肯定地告诉大家,初学者是完全可以去做这些事情 ...

  4. Unity 游戏框架搭建 (七) 减少加班利器-QApp类

    本来这周想介绍一些框架中自认为比较好用的小工具的,但是发现很多小工具都依赖一个类----App. App类的职责: 1.接收Unity的生命周期事件. 2.做为游戏的入口. 3.一些框架级别的组件初始 ...

  5. Unity 游戏框架搭建 (九) 减少加班利器-QConsole

    为毛要实现这个工具? 在我小时候,每当游戏在真机运行时,我们看到的日志是这样的. 没高亮啊,还有乱七八糟的堆栈信息,好干扰日志查看,好影响心情. 还有就是必须始终连着usb线啊,我想要想躺着测试... ...

  6. Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节

    上篇文章使用SafeObjectPool实现了一个简单的Msg类.代码如下: class Msg : IPoolAble,IPoolType{#region IPoolAble 实现public vo ...

  7. Unity 游戏框架搭建 (五) 简易消息机制

    什么是消息机制? 23333333,让我先笑一会. 为什么用消息机制? 三个字,解!!!!耦!!!!合!!!!. 我的框架中的消息机制用例: 1.接收者 using UnityEngine;names ...

  8. class unity 定义类_Unity 游戏框架搭建 2019 (二十五) 类的第一个作用 与 Obselete 属性...

    在上一篇我们整理到了第七个示例,我们今天再接着往下整理.我们来看第八个示例: #if UNITY_EDITORusing UnityEditor; #endif using UnityEngine; ...

  9. Unity 游戏框架搭建 2018 (一) 架构、框架与 QFramework 简介

    约定 还记得上版本的第二十四篇的约定嘛?现在出来履行啦~ 为什么要重制? 之前写的专栏都是按照心情写的,在最初的时候笔者什么都不懂,而且文章的发布是按照很随性的一个顺序.结果就是说,大家都看完了,都还 ...

最新文章

  1. 回归模型和时间序列模型中的MAPE指标是什么?MAPE指标解读、MAPE越大越好还是越小越好、使用MAPE指标的注意事项
  2. java中如何调用自身结构_如何在Java中的自定义异常中设置我自己的消息,可以检索我的getMessage()但是没有使用构造函数,有什么办法吗?...
  3. CF932G Palindrome Partition
  4. Ruby on Rails 生成指定版本的 Rails 项目
  5. 《Code:The Hidden Language Of Computer Hardware and Software》 ——笔记
  6. java web 有哪些标签库_java web中jsp常用标签
  7. 网页设计中 透明效果的使用技巧
  8. html元素中的click属性,从HTML中的onClick属性调用jQuery方法
  9. 读书笔记——计算机组成原理
  10. 推荐几个我目前在用的简历制作工具
  11. Java开发工程师,每个阶段需要掌握什么重点?
  12. tcp socket编程 java_JAVA TCP Socket编程 计算题
  13. macos复制粘贴快捷键 快速_探究Mac OS十大键盘快捷键
  14. 牛顿法为什么比梯度下降法求解需要的迭代次数更少?
  15. 个人博客存在的三种形式
  16. 获取百度网盘提取码的两种方法
  17. window.dialogArguments 使用问题
  18. 【前端面试之缓存】js本地缓存、浏览器缓存、服务器缓存
  19. 完美简单的集成高德地图导航和语音播报功能
  20. D语言(Dlang)在单片机(cortex-m)上应用方法

热门文章

  1. java实现item-cf_基于用户(UserCF)和物品(ItemCF)协同过滤算法的比较哈利波特问题...
  2. Wannafly模拟赛3-B 贝伦卡斯泰露(DFS)
  3. SmartBits - 简介
  4. kubernetes 对比 mesos + marathon
  5. 小红书种草推广,产品怎么在小红书推广
  6. 锚框的实现-非极大值抑制预测边界框
  7. 基于车道线的直线辅助横向定位
  8. 电脑风扇噪音大可以通过设置CPU功率来改善
  9. java汽车4S店管理系统myeclipse定制开发oracle数据库网页模式java编程jdbc
  10. Springboot整合poi +vue实现导出导入Excle表格数据展示图形