在上一篇,我们学习了,脚本生成的基本使用。

在这一篇,我们试着深入,聊聊脚本生成给我们带来的便利。

脚本生成的便利

首先,我们要知道,在 Unity 的游戏世界中都是以 GameObject 为单位的,而 GameObject 是可以设置子 GameObject 的。所以,一般我们看到的 GameObject 都是呈树结构的。

而树结构,是一个比较好管理的结构,有层次的同时又有单向依赖关系。

在上一篇说到,在父节点获取子节点的对象,我们一般用 GameObject.Find 或 tranform.Find 实现。那么在开发一个 Unity 项目的过程中,这种操作会出现非常多次。

因为游戏对象之间要进行交互,而要交互则就要访问对象。

而 QF 的脚本生成简化了访问对象的操作,同时它可以规范我们,所有的控制脚本所在的 GameObject 都呈现一个树形结构。使得一个项目中的结构,变成如下图所示:

这就是脚本生成存在的意义,简化了操作、提供了规范。

ViewController 与 Bind

在上一篇,我们操作的过程中,接触了 ViewController 和 Bind。

ViewController 是 脚本生成的一个”容器“,而 Bind 则是一个节点,一个 ViewController 可以绑定多个 Bind。

ViewController 可以绑定多个 Bind 之外,还可以绑定 ViewController,不过要绑定的 ViewController 必须是其子节点。

也就说 ViewController 支持嵌套绑定。

ViewController 与 ViewController 的嵌套绑定

让 ViewController 成为另一个 ViewController 的子节点非常简单,只需要在子节点挂上 ViewController 的同时,再挂上一个 Bind。

如下图所示:

然后,先生成子节点的 ViewController 代码,再生成 父节点的 ViewController 代码即可。

结果如下所示:

这样,嵌套绑定就实现了。

当前的组件结构如下:

  • GameRoot(ViewController)

    • Player1(ViewController)

      • PlayerAnimation(Bind)

嵌套绑定的实现非常简单,不过这里要提醒大家,在一般情况下,笔者很少在项目中使用嵌套绑定,一般只使用简单的 ViewController 和 Bind 就可以满足大部分需求了。

此篇内容就这些。

  • 转载请注明地址:凉鞋的笔记:liangxiegame.com。
  • 任何问题欢迎到 QQ 群:623597263 交流。

QFramework 使用指南 2020 (四):脚本生成(2)ViewController 与 ViewController 嵌套绑定的更多相关文章

  1. QFramework 使用指南 2020(三):脚本生成(1)基本使用

    在上一篇,我们对 QFramework 的两个主要版本提供了介绍,并且写下了第一个 QFramework 脚本. 在这一篇,我们学习 QFramework 中几乎每个项目都要用到并且从中受益的功能:自 ...

  2. QFramework 使用指南 2020(六):脚本生成(4)小结与补充

    我们花了四篇文章,介绍了 QF 中的脚本生成功能. 实际上 QF 中的脚本生成是有两种的,第一种就是我们现在学习的 ViewController + Bind 模式. 这种模式是为除 UGUI 以外的 ...

  3. QFramework 使用指南 2020(五):脚本生成(3)生成 Prefab

    在上一篇,我们简单介绍了 ViewController 的嵌套实现. 在这一篇,我们学习 ViewController 脚本生成的最后一个功能,即:生成 Prefab. 实际上这个功能非常简单. 我们 ...

  4. QFramework 使用指南 2020(七):Res Kit (1)概述与基本使用

    在上一篇,我们刚刚结束了 脚本生成专题,我们知道 QF 提供了两种脚本生成模式,一种是 ViewController + Bind ,另一种是 UI Kit 模式. 本来打算,介绍完 ViewCont ...

  5. QFramework 使用指南 2020(二):下载与版本介绍

    目前 QFramework 有两个可供安装的版本 PackageKit:QFramework 的插件平台,可以下载只感兴趣的插件,除了 Framework 模块还有一些 Shader 案例.项目模板. ...

  6. QFramework 使用指南 2020(九):Res Kit(3)异步加载 与 异步队列加载

    在上一篇我们了解了 Res Kit 的一些背后设计原理,讲解了一些概念,比如:开发阶段.真机阶段等. 在这一篇,我们回到 Res Kit 使用细节上. 在 Res Kit 的第一篇,我们介绍了 Res ...

  7. QFramework 使用指南 2020(八):Res Kit(2)模拟模式与非模拟模式

    在上一篇,介绍了 Res Kit 的基本使用,相信大家已经体会到了 Res Kit 的简便之处了. 在这一篇,我们试着探讨一下 Res Kit 的设计背后原理. AssetBundle 的不便之处 在 ...

  8. QFramework 使用指南 2020 (一): 概述

    大家好,我是 QFramework 的作者 凉鞋,QFramework 从第一次代码提交到现在快 5 年了,期间陆陆续续增加了很多功能,在使用体验上做了大量的改进. 而市面上关于 QFramework ...

  9. Knockout应用开发指南 第四章:模板绑定

    原文:Knockout应用开发指南 第四章:模板绑定 模板绑定The template binding 目的 template绑定通过模板将数据render到页面.模板绑定对于构建嵌套结构的页面非常方 ...

随机推荐

  1. for循环使用后contains方法失去效果

    重写了cartInfo中的equals和hashcode方法 第一种方式:包含是可以的List<CartInfo> cookie = new ArrayList<CartInfo&g ...

  2. JS客户端类型的判断

    **第一种:通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端.代码如下:** <script type="text/javascript"& ...

  3. vue 配置CDN加速

    1.首先index.html 中配置cdn 引入 <!-- 引入样式 --> <link rel="stylesheet" href="//cdn.bo ...

  4. angularjs 动态计算平均值

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 指针&虚函数多态性

    class Class1 { public: virtual void f() { cout << "Function f() in Class1 \n"; } voi ...

  6. linux笔试题

    1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2. 在大多数Linux发行版本 ...

  7. background-size值为cover和值为100%的区别

    background-size:100% 100%;---按容器比例撑满,图片变形: background-size:cover;---把背景图片放大到适合元素容器的尺寸,图片比例不变. IE8及以下 ...

  8. 系统信息的管理函数API

    1.Windows系统信息 1.1获取系统版本:   BOOL WINAPI GetVersionEx( __in_out LPOSVERSIONINFO lpVersionInfo ); lpVer ...

  9. maven项目无法查看类库的源码

    一个Maven项目有两种类库,分别是JRE System Libaray和Maven Dependencies. JRE System Libaray 一般有两种方法指定. 1.由pom.xml中的m ...

  10. Ubuntu 14.04 更换为阿里云源

    #备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak#编辑sudo vim /etc/apt/sources.list,清空后,加入以下 ...