Chapter 6. Working with the UI Source

拆解EventSystem循环、事件接口、ExecuteEvents、自定义事件数据与2015年uGUI源码工作流;用布局探针、事件路由和多分辨率发布门完成独立复核。

学习目标

  • 能说明“Chapter 6. Working with the UI Source”如何拆解EventSystem循环、事件接口、ExecuteEvents、自定义事件数据与2015年uGUI源码工作流,并明确2015年uGUI原书与Unity 6现行资料的时代边界
  • 能先预测“怎样从输入模块沿Raycaster、事件数据、接口和处理器重放一次事件,并区分历史源码仓库与现行包?”的布局或事件结果,再沿层级、矩形、画布、相机、射线和处理器逐阶段核对
  • 能注入“自定义事件容器复用错误数据类型,同时把2015源码仓库操作当作Unity 6包升级流程”,用“活动输入模块唯一,Raycaster结果可排序,事件数据类型匹配处理器,源码版本与项目Unity版本一致”决定接受、修正或拒绝UI发布

为什么从这个UI任务开始

源码页先把事件当成可重放消息路由,再讨论扩展;2015年的Bitbucket式源码获取与现行包分发必须分别标注。 “Chapter 6. Working with the UI Source”使用的贯穿任务是:为Roll-a-Ball警报板添加自定义事件,记录Droid与压力板处理器,再复盘源码分叉、同步和回馈边界。 操作前先预测哪个矩形、射线目标或事件处理器会变化,运行后再补理由不算预测。

本页围绕“怎样从输入模块沿Raycaster、事件数据、接口和处理器重放一次事件,并区分历史源码仓库与现行包?”建立正常、故障与恢复路径。只有“Chapter 6. Working with the UI Source”保持“活动输入模块唯一,Raycaster结果可排序,事件数据类型匹配处理器,源码版本与项目Unity版本一致”并交付输入模块、PointerEventData、RaycastResult、目标排序、事件接口、ExecuteEvents、自定义数据、处理日志和源码版本说明。,编辑器画面才构成UI证据。

书目、38组条目与UI时代

“Chapter 6. Working with the UI Source”以作者公告核对Simon Jackson在2014年发布的《Unity 3D UI Essentials》及其围绕Unity 4.6新UI、动态缩放、效果和世界空间界面的定位;出版社授权预览核对第一版详细目录,中文版书页核对《Unity UI设计》出版信息。课程分母为六章与附录合并后的38组公开目录条目。

“Chapter 6. Working with the UI Source”只依据作者公告、授权样章和公开目录限定范围,不逐段改写原文;解释、状态模型、交互、练习与答案均为独立教学重写。每个合并目录组保留组内全部英文小节名,不能用一个现代主题替换。

“Chapter 6. Working with the UI Source”另以技术核对 1技术核对 2技术核对 3技术核对 4核对现行技术事实。2015年的旧GUI对照、uGUI初版面板和源码仓库流程保留为原书时代轨;Unity 6的uGUI 2.0与UI系统比较只验证稳定布局、画布和事件机制或说明迁移边界,不能反向证明原书当年的菜单、包和默认值。

公开目录条目与UI机制

The Event System loop;Controlling state;Raycast Marshalling

公开坐标 1/7。 在“Chapter 6. Working with the UI Source”的坐标1中,The Event System loop;Controlling state;Raycast Marshalling用于从活动输入模块经Raycaster生成事件数据并选择目标;先锁定场景和层级,再用输入样本、活动模块、RaycastResult排序、目标和事件日志复核,出现多个模块或错误相机竞争同一输入时不得发布。

Working with events;Using a parameter;Built-in event interfaces

公开坐标 2/7。 Working with events;Using a parameter;Built-in event interfaces进入“Chapter 6. Working with the UI Source”后要回答第2张布局卡:它怎样用类型化事件数据和接口把消息派发到明确处理器、改变哪个矩形或目标、由哪些事件类型、数据载荷、ExecuteEvents调用、接收者与副作用日志证明,并如何排除载荷类型与处理接口不匹配。

Executing events;Building your own handlers or custom events

公开坐标 3/7。 围绕“怎样从输入模块沿Raycaster、事件数据、接口和处理器重放一次事件,并区分历史源码仓库与现行包?”,条目3把Executing events;Building your own handlers or custom events解释为用类型化事件数据和接口把消息派发到明确处理器;复核者先读取事件类型、数据载荷、ExecuteEvents调用、接收者与副作用日志再判断画面,不能接受载荷类型与处理接口不匹配。

A custom event Data Structure;A custom event Interface;A custom event static container

公开坐标 4/7。 对“Chapter 6. Working with the UI Source”而言,A custom event Data Structure;A custom event Interface;A custom event static container的最小合同是用类型化事件数据和接口把消息派发到明确处理器,第4次检查保存事件类型、数据载荷、ExecuteEvents调用、接收者与副作用日志;若产生载荷类型与处理接口不匹配,就回到层级、布局或事件上游。

The Roll a Ball Derby;The Droid script;The Alarm plates

公开坐标 5/7。 第5个公开条目组The Roll a Ball Derby;The Droid script;The Alarm plates服务于拆解EventSystem循环、事件接口、ExecuteEvents、自定义事件数据与2015年uGUI源码工作流,需要以场景层级、碰撞层、对象身份、初始状态与冷启动轨迹呈现在版本化3D场景中连接压力板、角色、相机和UI事件;未保存场景基线而无法归因会破坏“活动输入模块唯一,Raycaster结果可排序,事件数据类型匹配处理器,源码版本与项目Unity版本一致”。

Getting access to the source;The repository;Getting forked;Keeping up to date

公开坐标 6/7。 学习者在“Chapter 6. Working with the UI Source”中讨论Getting access to the source;The repository;Getting forked;Keeping up to date前预测锁定2015源码版本、分叉、同步与项目集成边界会改变哪项布局或交互状态,再读取仓库提交、Unity版本、差异补丁、升级记录与回馈说明;观察到把历史源码流程当成现行包升级步骤时保留失败轨迹。

Adding your own version of UI to your project;Extra credit, push it back to Unity

公开坐标 7/7。 为Roll-a-Ball警报板添加自定义事件,记录Droid与压力板处理器,再复盘源码分叉、同步和回馈边界。 在条目7处理Adding your own version of UI to your project;Extra credit, push it back to Unity时,要把锁定2015源码版本、分叉、同步与项目集成边界写进UI合同,把仓库提交、Unity版本、差异补丁、升级记录与回馈说明写进运行记录,并把把历史源码流程当成现行包升级步骤写进故障样本。

先预测,再操作三个UI实验

分步1 / 3

1. 画布锚点与布局探针

切换“警报压力板、Droid接收器、事件日志”以及手机竖屏、横屏和桌面窗口,核对Anchor Min/Max、Pivot、offset与安全区怎样连接“Chapter 6. Working with the UI Source”。

画布与锚点探针

固定布局合同,再切换分辨率

怎样从输入模块沿Raycaster、事件数据、接口和处理器重放一次事件,并区分历史源码仓库与现行包?

目标视口

被测 RectTransform

390 × 844窄屏与安全区
safe area
警报压力板

Anchor Min / Max(0.05, 0.9) → (0.05, 0.9)

Pivot / Offset(0, 1) · +16, -16

本页目录坐标:The Event System loop;Controlling state;Raycast Marshalling、Working with events;Using a parameter;Built-in event interfaces、Executing events;Building your own handlers or custom events、A custom event Data Structure;A custom event Interface;A custom event static container、The Roll a Ball Derby;The Droid script;The Alarm plates、Getting access to the source;The repository;Getting forked;Keeping up to date、Adding your own version of UI to your project;Extra credit, push it back to Unity

Chapter 6. Working with the UI Source的可重放UI协议

阶段UI动作必留证据拒绝条件
跟踪循环状态与射线在“Chapter 6. Working with the UI Source”执行跟踪循环状态与射线,只允许声明组件写入布局或状态Unity版本、场景层级、视口与初始状态层级或对象身份不可追溯
实现类型化事件分发在“Chapter 6. Working with the UI Source”执行实现类型化事件分发,只允许声明组件写入布局或状态RectTransform、Canvas、相机、射线与事件轨迹自定义事件容器复用错误数据类型,同时把2015源码仓库操作当作Unity 6包升级流程
锁定源码版本和回馈路径在“Chapter 6. Working with the UI Source”执行锁定源码版本和回馈路径,只允许声明组件写入布局或状态分辨率矩阵、构建截图、迁移与回退记录无法重放或恢复基线
unit: "uid-06"
question: "怎样从输入模块沿Raycaster、事件数据、接口和处理器重放一次事件,并区分历史源码仓库与现行包?"
scenario: "为Roll-a-Ball警报板添加自定义事件,记录Droid与压力板处理器,再复盘源码分叉、同步和回馈边界。"
panels: ["警报压力板", "Droid接收器", "事件日志"]
stages: ["跟踪循环状态与射线", "实现类型化事件分发", "锁定源码版本和回馈路径"]
invariant: "活动输入模块唯一,Raycaster结果可排序,事件数据类型匹配处理器,源码版本与项目Unity版本一致"
fault: "自定义事件容器复用错误数据类型,同时把2015源码仓库操作当作Unity 6包升级流程"
evidence: "输入模块、PointerEventData、RaycastResult、目标排序、事件接口、ExecuteEvents、自定义数据、处理日志和源码版本说明。"
reset: restore_viewport_panel_route_step_gates_and_artifact

该协议要求“Chapter 6. Working with the UI Source”在相同Unity版本、场景、层级、视口、输入和初始状态下重放。重置后若视口、面板、路由模式、步骤、发布门或证据显示没有回到基线,交互状态已经污染比较,不能作为UI证据。

本页回顾

掌握“Chapter 6. Working with the UI Source”不是记住编辑器点击顺序,而是能围绕“怎样从输入模块沿Raycaster、事件数据、接口和处理器重放一次事件,并区分历史源码仓库与现行包?”重建UI状态,并用“活动输入模块唯一,Raycaster结果可排序,事件数据类型匹配处理器,源码版本与项目Unity版本一致”拒绝“自定义事件容器复用错误数据类型,同时把2015源码仓库操作当作Unity 6包升级流程”。最终交付为输入模块、PointerEventData、RaycastResult、目标排序、事件接口、ExecuteEvents、自定义数据、处理日志和源码版本说明。

练习与答案

练习

  1. 问题 1:UI合同。 “Chapter 6. Working with the UI Source”为什么必须先声明Unity版本、场景层级、视口、布局写入者、相机与输入模块?
  1. 问题 2:目录逐项覆盖。 怎样证明公开条目组已经进入机制、交互和练习?
  1. 问题 3:故障恢复。 怎样证明“自定义事件容器复用错误数据类型,同时把2015源码仓库操作当作Unity 6包升级流程”已经被修正?

名词解释

名词解释

本章出现的专业名词,用大白话再讲一遍。

UI条目1

对应“The Event System loop;Controlling state;Raycast Marshalling”;在“Chapter 6. Working with the UI Source”中用于从活动输入模块经Raycaster生成事件数据并选择目标,需要连接Unity时代、层级、矩形、画布、输入与目标。

UI条目2

对应“Working with events;Using a parameter;Built-in event interfaces”;在“Chapter 6. Working with the UI Source”中用于用类型化事件数据和接口把消息派发到明确处理器,需要连接Unity时代、层级、矩形、画布、输入与目标。

Executing events

对应“Executing events;Building your own handlers or custom events”;在“Chapter 6. Working with the UI Source”中用于用类型化事件数据和接口把消息派发到明确处理器,需要连接Unity时代、层级、矩形、画布、输入与目标。

UI条目4

对应“A custom event Data Structure;A custom event Interface;A custom event static container”;在“Chapter 6. Working with the UI Source”中用于用类型化事件数据和接口把消息派发到明确处理器,需要连接Unity时代、层级、矩形、画布、输入与目标。

UI条目5

对应“The Roll a Ball Derby;The Droid script;The Alarm plates”;在“Chapter 6. Working with the UI Source”中用于在版本化3D场景中连接压力板、角色、相机和UI事件,需要连接Unity时代、层级、矩形、画布、输入与目标。

UI条目6

对应“Getting access to the source;The repository;Getting forked;Keeping up to date”;在“Chapter 6. Working with the UI Source”中用于锁定2015源码版本、分叉、同步与项目集成边界,需要连接Unity时代、层级、矩形、画布、输入与目标。

UI条目7

对应“Adding your own version of UI to your project;Extra credit, push it back to Unity”;在“Chapter 6. Working with the UI Source”中用于锁定2015源码版本、分叉、同步与项目集成边界,需要连接Unity时代、层级、矩形、画布、输入与目标。

资料与写作方式声明

本章以Simon Jackson《Unity 3D UI Essentials》合法公开试读核定可见范围,并以目录限定未公开部分,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

原作版权归作者与出版社所有;本站原创教学结构与表述仅供学习交流。

讨论

评论区加载中…