• [MarsZ]Unity3d游戏开发之Unity3d全策划配置新手指引


    Unity3d全策划配置新手指引

    前言... 2

    版本... 2

    作者... 2

    功能... 2

    类型... 2

    触发类型... 2

    步骤类型... 3

    实现... 4

    简要... 4

    策划方面... 4

    程序方面... 4

    流程图... 5

    详细技术方案... 6

    程序主要逻辑... 6

    关键细节答疑... 6

     附:word版百度云盘下载

    http://pan.baidu.com/s/1DbNxs

    前言

    本文档描述Unity3d下支持策划灵活配置、多样性丰富的新手指引的相关说明,如有设计上不明白的地方,可登陆游戏(《魔霸西游》)体验。技术上有疑问的地方,可联系作者MarsZ解答,QQ569491198。

    2015年7月28日

    版本

    V1.2( 2015年7月29日11:33:09)

    作者

    MarsZ (QQ569491198)

    功能

    在指定任意条件下,触发某对应指引,指示玩家执行某相关操作(如点击、拖动或播放某指令)。指引期间除执行指定操作外,无法执行其他无关操作(如点击无关地方)。所有指引由策划灵活配置,包括什么时候触发、触发什么指引等。

    类型

    触发类型

    指引触发条件(主条件为可能触发指引的操作,副条件为判断指引能否触发时的附加判断条件)
    格式: type,value
    =====只为主条件, 后端用=====
    1: 完成某指引后,主界面触发 base_guide.guide_id
    2: 首通某关卡后,主界面触发 base_scene.scene_id
    =====只为主条件=====
    5: 关卡对话结束(关卡id#1,战胜;2,战败;3,胜或败;4,战前)
    6: 点击操作(界面#目标#索引 0无索引)
    7: 拖动操作(界面#目标1#索引1#目标2#索引2 0无索引)
    11:任意仙魔血量低于X(%) (只用于线性)
    25:章节领奖(关卡id#0,该关卡;1,除了该关卡)
    =====可为副条件=====
    10:进入区域(关卡id#区域12345)
    14:战斗&回合(关卡id # 1胜;2败;3超时;4战败 # 第n次)
    15:战斗&回合(除了关卡id # 1胜;2败;3超时;4战败 # 第n次)
    16:战前配置,已上阵X个仙魔 (不包括主角)
    20:主角的第1个激活属性激活了(1)(1不可修改)
    21:主角提升到了N级(N)
    =====只为副条件:
    12:检测任务状态(任务id#0,未完成;1,完成未领;2,完成已领;3,未触发;4,完成)
    17:检测指引状态(指引id#0,未完成;1,完成)
    18:检测PVP状态(界面#0,未开始;1,开始)
    22:检测战斗状态(关卡id#0,非战斗中;1,战斗中)
    23:检测敌方仙魔总血量高于百分比(关卡id#XX)
    24:检测模块是否解锁(模块id#0,未解锁;1,解锁;)

    ……

    步骤类型

    0: 纯对话
    1: 箭头指示
    2: 手指点击
    3: 手指拖动
    4: 手指双击
    7: 功能解锁/锁定
    9: 战斗暂停/继续
    10:发送仙魔位置
    11:对错提示
    12:播放解锁动画
    13:移到主界位置
    14:战斗界面动画
    15:切换头像
    16:点击移动
    17:箭头文本
    18:至某界面
    20:滑动地图

    ……

    实现

    简要

    策划方面

    策划主要通过配置2个表来实现对指引的设置和控制,分别为:

    base_guide表以及base_guide_step表。表结构分别为:

     

    图1 base_guide表结构

     

    图2 base_guide_step 表结构

    程序方面

    程序读取配置表,当用户执行某些特定类型的操作,如点击、拖动或接收/完成任务,通关某关卡等时,检测相关操作能满足哪个指引组的执行条件(如是否点击了对应的指引物体、是否拖动了对应的物体到对应的位置、是否接受/完成了对应的任务、是否通关了对应的关卡)。如满足某指引组执行条件,并且当前能执行指引(如不在加载界面,界面不在缓动等),则执行对应的指引组(base_guide表的guide_id的指引)。如不满足,则指引暂时结束。

    执行完某指引组的当前步骤的指引(base_guide_step表的guide_step_id的指引)后,判断是否已执行完当前指引组的所有指引步骤,如未指引完,则执行该指引组中的下一个指引步骤,否则判断是否能触发下个指引组。

    流程图

     

    图3 流程图

    详细技术方案

    程序主要逻辑

    1、根据策划配置的指引触发类型,设置对应的指引触发类型常量;

    2、根据策划配置的指引步骤类型,设置对应的指引步骤常量,设计相应的指引步骤界面(如需要界面,如点击和拖动等需要手指播放界面。如播放某动画需要全屏遮罩等);

    3、打开界面时:

     i、根据策划配置,检测该界面是否有能触发指引的GameObject,如有,给这些GameObject绑定GuideTriggerGameObject脚本,用于截获能触发指引的操作,如点击(OnClick)等。截获到操作时,发送触发指引消息。指引控制器检测该操作能否触发指引组,如可以,指引之。

     ii、根据策划配置,检测该界面是否有能执行指引的GameObject,如有,给这些GameObject绑定GuideGameObject脚本。当该GameObject正处于绑定的指引步骤执行中时,调整该GameObject的Layer和Depth等,让该GameObject可以接受点击或其他对应的指引操作。以及独立于其他显示单元进行高亮(如需要)。

    4、指引步骤执行完毕后,发送消息给控制器,控制器收到后,检测当前指引组是否还有下一个指引步骤,如有,继续执行下一个指引步骤,直至指引完该指引组的全部指引步骤。

    5、指引组的步骤全部指引完毕后,检测是否能触发下一个指引组,如能,执行之,否则指引暂停。

    关键细节答疑

    Q:关于指引时只让对应的指引物体可以接受点击、拖动等事件或者高亮。

    A:指引时全屏遮罩一个指引layer(层级高于普通GameObject的层级)的蒙版,屏蔽所有无关的GameObject,对应正处于指引步骤中的GameObject,调整其层级到layer层,调整其depth以满足深度合适(必要时可以借助UIPanel来设置depth),让其可以接受事件。

    Q:关于点击具有某属性值的物体触发特定指引。如点击某类型的某ID值的卡牌能触发特定指引。

    A:打开界面时,给能触发指引步骤的物体绑定GuideGOInfo(继承自MonoBehaviour)脚本,脚本上附上相关的属性值(这些属性在物体上的信息更新时也要即时更新)。当物体遇到触发条件时(如被点击等),检测上方的属性时是否也满足某些指引的触发条件,如果一切条件都满足,即可触发对应指引。

    Q:关于“播放动画”类型的指引步骤的执行方案。

    A:对于这类型的指引步骤,当触发时,发送消息事件给外部,请求“播放动画”或其他操作。当这类操作完毕时,发送消息事件给指引,告知指引步骤完毕,让指引继续执行即可。

    Q:关于断线重连后指引的继续。

    A:关键指引步骤会发送消息给后端(见base_guide_step表的to_server

    字段),请求后端保存该指引组和指引步骤。断线重连后,结合后端保存的指引组ID和指引步骤,计算出当前应该处于的指引组和指引步骤,执行之。如果该步骤是某界面中执行的,则先打开对应界面再执行指引步骤即可。

    Q:关于指引间隙误操作。

    A:要有个全局的指引遮罩蒙版,指引间隙间(如2步骤间等)让蒙版的作用。指引继续执行时或者指引结束后去掉该蒙版。

    Q:某GameObject如何知道自己处于当前指引步骤。

    A:该GameObject身上会有GuideGameObject脚本,继承自MonoBehaviour,且脚本中绑定有与本GameObject关联的指引组和指引步骤列表。当Update执行时,会判断其绑定的指引组和指引步骤列表中,是否有当前正在执行的指引组和指引步骤,如果有,则为正在执行与自身有关的指引。

    Q:如何知道某GameObject绑定有什么指引。

    A:在界面初始化时及界面中可能触发指引的GameObject变化时,发送一个重新更新绑定GuideGameObjectGuideTriggerGameObject的事件。收到事件后,循环遍历本界面GameObject上的所有Children GameObject,判断其名字和索引是否对应到了base_guide_stepbase_guide中,如果有,则绑定GuideGameObjectGuideTriggerGameObject脚本,并且更新脚本里存储的指引组和指引步骤列表。

  • 相关阅读:
    SQL Sever语言 存储过程及触发器
    计蒜客 挑战难题 移除数组中的重复元素
    projecteuler Sum square difference
    码农谷 求前N项之和
    projecteuler Smallest multiple
    计蒜客 挑战难题 寻找插入位置
    Largest palindrome product
    计蒜客 挑战难题 元素移除
    码农谷 球从M米高度自由下落第N次落地时反弹的高度
    挑战难题 奇怪的国家
  • 原文地址:https://www.cnblogs.com/marsz/p/4685522.html
Copyright © 2020-2023  润新知