上一篇我介绍了相关控件的搭建以及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按钮的设计过程。

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

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

    设计桌面端应用的工作流程&实现资源导入,管理系统 根据需要,我再次整理了一下桌面端程序的功能,该程序具有配对(映射)资源.打包资源.上传资源.以及生成二维码的功能,具体流程图如下: 据此,我首 ...

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

    (个人)AR电子书系统创新实训第四周(1) 宣传册设计周记07 01宣传册目录 ①拷贝封面底层的云纹. ②设计印象济宁方形框,包括文字的创意与排版,方框的位置摆放,印章的位置摆放. ③目录的设计,包括 ...

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

    (个人)AR电子书系统创新实训第四周(2) 宣传册设计周记08 01五与六页 该页的主要内容是介绍济宁的几个代表性文化,分别是孔孟文化,运河文化,水浒文化,佛教文化,梁祝文化,和师祖文化. 这一页面主 ...

  4. (个人)AR电子书系统创新实训第一周(1)

    -我们小组五人在选定了实训的课题之后就开始仔细讨论整个项目的设计.在产品展示上我们分为两部分,一块是纸媒,一块是APP. - 纸媒的展示效果就是,在我们做的宣传册上扫图片就可以获得二维甚至三维的视觉体 ...

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

    打包安卓遇到的问题&测试二维码生成功能 打包安卓 在上一篇报告中我成功地做出了一个简单的二维码识别项目,于是我便尝试将其打包为安卓格式.安卓文件确实顺利地打包出来了,程序也可以运行,但出现了一 ...

  6. (个人)太极拳学习系统创新实训第三周(一)

    本周任务: 这周的主要任务是实现基于Unreal Engine 4的VR交互,我将介绍我在这周完成的VR交互的进度和在实现过程中遇到的具体问题. 主要过程: 首先在Unreal Engine 4中创建 ...

  7. (个人)VR实时交互的太极拳学习系统创新实训第七周(2)

    标准动画信息的重动捕 因为开始使用了demo中,使用的是一个简单的机器人,不符合最终成品的要求,因此和组里另一名成员进行新的模型动作的制作-----使用一个穿着太极拳服的角色重新进行动捕. 为了使原来 ...

  8. 创新实训——第三周2

    这次我对聊天应用的表情包进行了编写,包括聊天表情图片的加载.聊天表情的发送(分为两部分,系统键盘输入时和自定义键盘输入时分情况处理) EmojiUtils类中先定义两个个数组来存储所有的表情,一个其中 ...

  9. 山东大学软件学院项目实训-创新实训-SDUMeeting(三)

    山东大学软件学院项目实训-创新实训-SDUMeeting(三) 山大会议项目web安全之文件注入防护 一.前言 山大会议的客户端加入了对用户自定义头像的支持,需要用户自行上传头像图片,这个过程存在文件 ...

最新文章

  1. 基础的VueJS面试题(附答案)
  2. 火狐查cookie_Firefox 65默认会阻止跟踪Cookie
  3. Android控件——ListView之Adapter提供数据(其二)
  4. JAVA实现可视化的xpath_【Java】爬虫基础 -- XPath 小案例
  5. 获取bootgrid选中行数据_Easyui 取得选中行数据_EasyUI 教程
  6. mysql 循环_MySQL存储过程中的3种循环【转载】
  7. 最新SSCI影响因子以及分区名单
  8. Axure RP 8下载
  9. 高通Android display分析【转】
  10. 游戏技巧-《七日杀》存档位置
  11. web前端——div和span标签
  12. 如何把谷歌浏览器中文改成英文版本
  13. 花草茶之常用配方及功效说明
  14. c语言能保留x后两位并且四舍五入的,二级C语言真题笔记
  15. Google Play关键词排名优化
  16. 防止cint和clng的溢出出错
  17. 2.6 自定义srv python
  18. ats中的Servername和via值修改
  19. HR面试“六西格玛黑带”时都会聊些什么问题?
  20. 51单片机制作花式流水灯的三种方式总结与仿真运行

热门文章

  1. java中addrange_java elasticsearch 桶聚合(bucket)
  2. 我的oracle + blog之旅
  3. 灰度发布-Spring cloud gray系列之服务灰度测试
  4. FastReport分组、填充空格、分页和小计
  5. ABAP创建数据库表
  6. 错误解决:error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
  7. Web功能测试笔记02 ——读《Web测试囧事》
  8. MPlayer和SMPlayer的安装
  9. django的运行命令
  10. 使用sync adapte(三)创建一个提供器