当前课程知识点:游戏程序设计 > 第四章 《游戏循环及实时模拟》 > 4.4 支撑游戏的功能 > 4.4 支撑游戏的功能
下面简单说一下
这个支撑游戏的几个功能
一个就是UI
UI我们用的是这个@UGUI
然后UGUI实际上它和
我不知道大家是否知道这一块
就是之前
其实Unity上是比较常用的
是一个叫NGUI的这样的系统
然后UGUI是NGUI作者
然后Unity把他聘过去在unity工作了一年
然后就设计了这个UGUI
然后完了之后
他又回去继续做NGUI去了
但是UGUI现在应该是被用的
就更广泛一些
因为毕竟UGUI
它是在C++底层提供了一些基础
而NGUI是完全用的
C#代码在引擎的普通功能上做起来的
Unity底层所提供的主要是这个画布(Canvas)
有这个画布的渲染(CanvasRenderer)
这就是
UGUI为什么说比NGUI会快一点
主要应该就是来源于这两款
然后游戏UI的实现的话
我简单说一下就是3D游戏里头
其实所有的UI都是拿两个三角形
拼一个矩形
就是我们所看到的UI都是这样
就是都是这样的一个一个的小方块
然后那上面贴上图
就构成了我们看到的这个UI的系统
然后这个Mesh概念应该大家也知道
就是刚才说的这些小三角形
最后因为对于3D游戏来说
3D的话它都要讲一个渲染的批次
如果就是我们从CPU提交到
这个GPU的次数
大概就是这么理解吧
然后如果这个次数越多的话
性能就会越低
因为就跟我们前面说的这个
多线程加锁一样
如果你加了两个很大的锁
实际上这个并行就消失了
变成了一个串行
所以同样的就是
如果批次过多的话
就会导致CPU和GPU之间
串行的时间越长
所以整体来看性能就会很低
所以一般像我们说的这个UI的三角形
虽然是构造成了我们就是UI的很多元素
但是最终的话呢
一般UI系统都会把这些三角形
按照某种方式构造成一个一个的Mesh
就是把它拼成一起
然后这样它提交给GPU的时候
就可以一次提过去
或者是几次就可以
而不是说特别特别多
这样主要是性能考虑
还有一块一个UI系统
通常会有的就是输入
输入的话
这个一般就是涉及到事件分发与这个冒泡
简单的说
其实就是当你鼠标在UI上点的时候
我们需要找到这个鼠标
它是点在哪个按钮上
这个就是事件的分发
现在你找到了它
点击在哪里
然后冒泡呢就是如果你点了这个按钮
这个按钮并没有响应你这个事件
那我们希望就是它的容器一级的
控件可以得到通知
所以这就是冒泡
就是它会一级一级往上报
所以有时候
我们的事件处理不一定就是
要安装在这个最底层的这个按钮上
也许可以放在更上一层
然后同时处理很多的按钮的这个处理
这就是冒泡的作用
我这些就都大概过一下这个
因为
细说了
还有点太多
然后这个Tween是一个开源的一个库
我就直接拿过来用了
然后那个用的就是把这个脚本挂在某一个
unity里头叫GameObject
挂到这个GameObject上之后
它可以提供一些功能
比如说可以让它移动
可以让它变颜色
可以改变它的Alpha值
就是比如说变成半透明甚至消失了或者
我觉得这里头我们主要用来做这个
在demo里面主要用来做伤害数字就是飘字
然后这一块设计了刚才提到的那个相机
相机的话我们这里说
有一个脚本就是用C#写的
是叫屏幕输入
这里头主要
主要实现的是
这个摇杆
还有一个就是相机的一些调整
相机的一些调整了我们
这是其中的一种模式
不是说所有的都是这个
如果大家用unity的话
直到现在
从2017开始
unity加了timeline之后
有一个那个相机的一个插件
那个插件呢
它的概念就和这个不太一样
它有很多虚拟相机
那是另外一套
我们这一个人是一个相对来说
可能跟传统一点
就是一般在3D游戏里头
会这样去表达一个相机
就是它会有一个lookat的目标
就我这个相机是看着谁的
或者说是跟随着谁了
就是它有一个看着谁
还有一个跟随着谁
然后呢
它有一个相机会到这个目标的一个距离
这是一个距离
还有一个人是相机的高度
其实还有另外一个参数
因为我这图画的是个2D的另外一个参数
是在这个跟这个垂直的
或者说可以理解成是绕这个目标
旋转着这样一个方向上
这次我们称之为相机的这个yaw
一般我这个相机的主要调整就是这个
我们可以调整相机到目标的这个距离
我们可以调整相机的高度
还可以调整相机就是看下目标的时候
有一个旋转
这是三个参数
然后另外一个是这个前面说道
就是场景里有一个空间管理
我们是做了一个
也是挂了一个脚本
在这个场景里头
然后它们会一直使用这个KD树
查询玩家周围的这个小球
然后能再发一个剧情的消息
这个剧情就是我们说的那个
自己做的那个DSL脚本
然后在那个这样的话
就在那边处理具体的跟游戏相关的事情
那么这个就它就跟游戏是没有关系的
它所做的就是根据它的KDTree的数据
然后来查询这个场景里的物件
然后发消息
还有一个呢
是这个是StoryObject
这个是挂在每个角色身上的
就是主要是处理头顶飘字
还有就是因为我们这里头涉及到一个碰撞
就是小球掉下来
落到这个地面的时候
它会要爆炸
我们需要去做这个检测
这样说有一个碰撞碰撞了
在这边就是通过C#
就可以使用引擎对应的这个功能
然后我们使用这里头的通用功能的意思
就是它做了一层转接
就是当碰撞
在这边出发之后
我会把它发个消息
到我们那个剧情脚本里头
然后实际的这个处理呢
就是游戏特定的点都在脚本里了
就是这种方式
我们可能会比较常见
在做游戏的时候
其实是会经常这样
就是会把一些相对通用的东西呢
拿出来
然后里头涉及到特定的东西
我们再利用一个通用的机制
把它转发到我们脚本里头去处理
还有一个就是相机
相机就是具体实现了
刚才说的那个三个参数的调整之后
怎么去实际实现这个相机
-1. 1什么是游戏(上)
--选择题
-1.2 什么是游戏(下)
--选择题
-1.3 游戏是如何开发出来的
-1.4 游戏引擎(上)
-1.5 游戏引擎(下)
--单选题
-1.6 如何成为一个游戏开发者
--多选题
-2.1 什么是游戏服务器
--单选题
-2.2 游戏服务器的和分类发展
--单选题
-2.3 核心技术和实现难点
--单选题
-2.4 设计原理与方法论
--单选题
-3.1 三维坐标系统
--多选题
-3.2 向量与运算
--单选题
-3.3 矩阵与线性变换
--双选题
-3.4 四元数
--3.4 四元数
--多选题
-4.1 游戏循环概述(上)
--多选题
-4.2 游戏循环概述(下)
--单选题
-4.3 《无尽之路》的实现
--单选题
-4.4 支撑游戏的功能
--选择题
-4.5 支撑游戏的机制与系统
--多选题
-5.1 基本介绍
--5.1 基本介绍
--单选题
-5.2 随机数生成器
--单选题
-5.3 随机数分布与应用
--单选题
-6.1 什么是游戏玩法开发
--单选题
-6.2 建立愿景 Vision
--单选题
-6.3 划定边界 Scope
-6.4 迭代 Iteration
--单选题
-6.5 迭代 Iteration+抛光Polish
--单选题
-7.1实时图形渲染管道 宏观渲染系统
--单选题
-7.2实时图形渲染管道 应用阶段
--单选题
-7.3实时图形渲染管道 几何阶段
--单选题
-7.4实时图形渲染管道 光栅化阶段
--单选题
-7.5实时图形渲染管道 总结 参考
-8.1 物理回顾1
--单选题
-8.2 物理回顾2
--单选题
-8.3 材质 1
--8.3 材质 1
-8.4 材质 2
--8.4 材质 2
-8.5 材质3
--8.5 材质3
-8.6局部光照
--8.6局部光照
--单选题
-8.7 全局光照
--8.7 全局光照
--单选题
-9.1 动画介绍
--9.1 动画介绍
--多选题
-9.2 游戏动画介绍
-9.3 动画技术类型
--多选题
-9.4 骨骼蒙皮动画
--多选题
-9.5 动画流水线
--多选题
-9.6 动画前沿趋势
--多选题
-10.1 .基本概念
--多选题
-10.2 设计目标
--多选题
-10.3 传输数据分析
--多选题
-10.4 常用同步方案 1
-10.4 常用同步方案 2
-10.4 常用同步方案 3
-10.4 常用同步方案 4
--多选题
-10.5 方案对比
--多选题
-11.1 基本图元
--单选题
-11.2 图元距离(上)
--单选题
-11.2 图元距离(下)
--单选题
-11.3 图元相交测试+ 其他几何方法
--单选题
-12.1 著名物理引擎介绍
--单选题
-12.2 物理引擎原理(上)
--单选题
-12.3 物理引擎原理(下)
--单选题
-12.4 游戏中的物理体
--单选题
-12.5 物理引擎使用入门
--单选题
-13.1开发语言
--13.1开发语言
--单选题
-13.2 开发环境
--单选题
-13.3 腾讯开发组件介绍
--单选题
-13.4 网络通信+业务框架介绍
--多选题
-14.1 进程间通信(上)
-14.2 进程间通信(下)
-14.3 通信格式
-14.4 并发模型
-14.5 超时处理
-14.6 大系统小做(上)
--多选题
-14.7 大系统小做(下)
-14.8 架构层面的技术支持(上)
--单选题
-14.9 架构层面的技术支持(下)
-14.10 分布系统的关键能力
--多选题
-15.1 游戏人工智能综述
-15.2 人工智能在游戏中主要方法 上
--多选题
-15.3人工智能在游戏中主要方法 (下)
-15.4 人工智能在游戏制作中的应用领域1
--多选题
-15.5 人工智能在游戏制作中的应用领域2
-15.6 人工智能在游戏制作中的应用领域3
--多选题
-15.7 人工智能在游戏运营中的应用实践(上)
-15.8 人工智能在游戏运营中的应用实践(下)
--多选题
-16.1 游戏支撑系统(1)
--单选题
-16.2 游戏支撑系统(2)
--单选题
-16.3 游戏支撑系统(3)
--单选题
-16.4 游戏支撑系统(4)
--单选题
-16.5 游戏支撑系统(5)
-17.1 游戏逻辑服务器(上)
--单选题
-17.1 游戏逻辑服务器(下)
-17.2 外挂与反外挂(上)
-17.2 外挂与反外挂(下)
--多选题
-18.1运行环境
--18.1运行环境
--多选题
-18.2物理部署
--18.2物理部署
--多选题
-18.3系统的可运维性
--多选题
-18.4运维案列分析
--多选题






