(个人)AR电子书系统创新实训第三周(2)

来源:互联网 发布:saber软件百度云 编辑:程序博客网 时间:2024/06/05 07:38

上一篇我介绍了相关控件的搭建以及sprite的处理,在这一篇我将介绍各个控件的组织以及相关的实现代码。

1、“设置”弹窗及按钮实现

  • 在上篇博文中我已经介绍了如何建立“弹窗”图片这里就不再赘述
  • 弹窗是可开可关的,因此需要建立脚本SettingPopup.cs,分别建立Close()和Open()函数对其进行控制,具体代码如下:
public void Open()    {        gameObject.SetActive(true);    }    public void Close()    {        gameObject.SetActive(false);    }
  • 只有函数是不可行的,我们还必须有调用它的接口,所以我在“MainMenu”上添加了脚本UIController.cs,在这个脚本中添加调用SettingPopup.cs函数的代码,具体代码如下:
[SerializeField]    private SettingsPopup settingsPopup;//弹窗槽void Start(){    settingsPopup.Close();//默认关闭弹窗} public void OnOpenSettings(){    settingsPopup.Open();}
  • 在“MainMenu”中的脚本栏关联上SetPopup组件
  • 由于是点击“set”按钮才会出现弹窗,而我建立的set按钮是图片,因此需要另外添加“Button”组件,在“Inspector”界面底部点击“Add Component”选择“Button”,在Button中的OnClick将SetPopup组件进行关联,并选择SettingPopup.open函数。具体设置如下图:
    这里写图片描述
    这样点击set按钮就会出现弹窗了
    注意:是将整个setPopup组件关联到OnClick中,而不是SettingPopup.cs代码关联到OnClick中!(我因为关联错了浪费了半个多小时在找问题……)
  • 如何关闭弹窗呢,同理,在setPopup中添加close按钮进行上一步的操作,唯一的区别是现在选择SettingPopup.close函数,具体设置如下图:
    这里写图片描述
    这样我就实现了弹窗的操作,由于编辑器不太方便我就不贴图了,等最终UI图标都设计好了之后在放图。

2、“返回”按钮实现

  • 建立“返回”图标:通过GameObject->UI->Image新建Image,重命名为“back”,将back图片拖入SourceImage
  • 按钮响应功能:由于我建立的返回图标是图片,因此需要另外添加“Button”组件,在“Inspector”界面底部点击“Add Component”选择“Button”,在Button中的OnClick进行当前界面与开始界面的切换,具体实现方法键创新实现第二周(2),主要设置见下图:
    这里写图片描述

3、宣传片UI功能实现
宣传片功能是点击该按钮,开始界面消失并显示HUD、播放宣传片。

  • 开始界面消失并显示HUD的处理方法与之前的相同,就不再赘述
  • 导入宣传片:Unity中能够识别的视频格式主要有:.mov, .mpg, .mpeg, .mp4, .avi, .asf,保证视频转码的顺利完成,我们还必须安装Quicktimeplayer工具,用于视频的转码
  • 按照要求,我安装了Quicktime player之后,将视频test.mp4通过拖拽导入到Unity中,结果提示:“Movie importing requires Quicktime to be installed…”这样的错误,这是因为Unity对于Quicktime player的依赖还没有生效
  • 通过查询我才知道,导入Unity的视频最后都被转码为.ogv格式,这是Unity能够直接识别的格式!
  • 费尽千辛万苦我找到了一个这样子的视频格式转码工具,能够将其他格式的视频转码为Unity能够直接识别的.ogv格式,而且不依赖于Quicktime player,这个工具是:TheoraConverter
  • 经过一系列的视频格式转换,我的视频终于能在unity中播放了
  • 接下来需要通过代码进行视频播放的控制,在Hierarchy视图中创建一个Plane对象视频将在它之上播放(当然也可以直接挂着camera上,但鉴于后期维护还是另建Plane对象比较好)。创建代码如下:
 //电影纹理public MovieTexture movTexture; void Start() {   //设置电影纹理播放模式为循环      movTexture.loop = false;} void OnGUI(){    //绘制电影纹理    GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movTexture, ScaleMode.StretchToFill);    }

这样视频就能有控制的播放了。

4、扫一扫UI功能实现
扫一扫功能是点击该按钮,开始界面消失并显示HUD,并且打开摄像头进行AR识别操作(这一部分由组里的其他成员完成)。关于开始界面消失并显示HUD的处理方法与之前的相同,就不再赘述。

5、使用说明UI功能实现
这一部分的实现与“设置”的弹窗界面类似,唯一的不同就是设置界面当点击close按钮之后,界面返回原界面;而使用说明的弹窗是当点击close按钮之后界面要返回开始界面,因此我在“使用说明”上新建SettingUsePopup.cs脚本,在其中建立BackGround对象,将开始界面关联到该对象上,通过代码对界面进行显示与隐藏操作,具体实现代码如下:

public GameObject background;    public void Open()    {        gameObject.SetActive(true);        background.SetActive(false);    }    public void Close()    {        gameObject.SetActive(false);        background.SetActive(true);    }

这样基本的框架就搭建好了,下一周我将会详细叙述UI按钮的设计过程。

阅读全文
0 0
原创粉丝点击