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

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

脚本生成的便利

首先,我们要知道,在 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. C语言笔记 09_共用体&typedef&输入|输出

    共用体 共用体允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 定义共用体 为了定义共用体, ...

  2. ueditor粘贴word图片无法显示的问题

    图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM ...

  3. leetcode解题报告(1):Remove Duplicates from Sorted Array

    描述 Given a sorted array, remove the duplicates in place such that each element appear only once and ...

  4. 2019 Multi-University Training Contest 10

    目录 Contest Info Solutions C - Valentine's Day D - Play Games with Rounddog E - Welcome Party G - Clo ...

  5. linux下设置git代理访问.

    有时候克隆仓库巨慢无比,需要设置代理. 一般情况下 proxychains 可以搞定的. 但是某些情况,如go 安装模块的时候是调用git的.这个时候proxchains就不行了. go 也可以通过设 ...

  6. .netcore signalR 实时消息推送

    服务器端引入包 Install-Package Microsoft.AspNetCore.SignalR客户端引入包  npm install @aspnet/signalr <template ...

  7. Python3.5以上Celery4.2.1启动报错:ImportError: cannot import name 'LRUCache' from 'kombu.utils.functional'

    服务器:Centos7 Python版本:Python 3.7.0 Celery版本:4.2.1 Python3.5以上,OrderDict不允许在迭代过程中进行修改,导致LRUCache.updat ...

  8. zabbix监控windows案例

    首先在zabbix官网下载zabbix软件包:https://www.zabbix.com/ 下载完成之后,将其解压到D盘 # 配置与安装,配置zabbix agent相关配置. 找到conf下的配置 ...

  9. Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect)

    Ubuntu14.04(indigo)实现RGBDSLAMv2(数据集和实时Kinect v2) 一.在.bag数据集上跑RGBDSLAMv2 RGBDSLAMv2指的是Felix Endres大神在 ...

  10. OpenResty之ngx_lua模块的加密接口

    原文: ngx_Lua模块中的加密api接口 ngx.crc32_short digest = ngx.crc32_short(str) 该方法主要是计算给定字符串 str 的循环校验码(Cyclic ...