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

上一篇我介绍了相关控件的搭建以及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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值