标题 | 基于Unity3DUGUI动态材质修改的实现 |
范文 | 张福峰 王敏 金会赏 摘要:虚拟现实技术的蓬勃发展为各产业注入新活力,房地产、汽车等行业虚拟现实的运用,让用户足不出户尽情领略虚拟现实的魅力。Unity3D是虚拟现实开发的利器,介绍在Unity3D中结合UGUI组件实现场景材质动态修改的方法。 关键词:Unity3D;UGUI;动态材质 中图分类号:TP37 ? ? ? ?文献标识码:A 文章编号:1009-3044(2020)25-0218-02 Abstract: The vigorous development of virtual reality technology injects new vitality into various industries. The application of virtual reality in real estate, automobile, and other industries enables users to enjoy the charm of virtual reality at home. Unity3D is a powerful tool for virtual reality development. This paper introduces the method of dynamic modification of scene materials in Unity3D with the UGUI component. Key words: Unity3D; UGUI; Dynamic material 随着VR(虚拟现实)技术的日新月异,多家网站推出了基于VR的虚拟看车、看房。用户足不出户就能360度全方位看到车辆、房间全貌,并能自由切换场景对象材质、颜色。在Unity3D软件中,可以借助Shader(着色器)轻松实现材质贴图的动态设置。Shader所做的就是将一个模型的网格渲染到屏幕上,它可以被定义为一系列的属性,你可以通過改变这些属性来改变模型渲染到屏幕上的效果,而这些属性被存放在一个叫作材质(material)的地方。另外,对于3D游戏来说,有很多绚丽的效果也都是靠Shader来实现的。 1GUI框架 GUI(Graphical User Interface)在游戏的开发中占有极其重要的地位,GUI界面友好、使用是否方便很大程度上决定了玩家的游戏体验。Unity3D内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。Unity 4.6以前没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现,或者借助第三方的GUI插件,如NGUI。NGUI是专门针对Unity引擎、用C#语言编写的一套插件,是一款老牌的Unity UI插件。NGUI完美地弥补了Unity引擎原生GUI系统的各种不足,提供了常见的UI控件,实现几乎所有需要的功能。 UGUI是NGUI作者参与开发的,由Unity官方推出的一套UI组件,从Unity4.6开始被集成到Unity编译器中的。UGUI相对于之前的GUI来说改头换面,灵活、快速和可视化是Unity官方给UGUI系统赋予的标签。UGUI由于是Unity原生支持的,所以使用上会更加人性化,对于开发者而言有三个优点:效率高效果好、易于使用和扩展以及与Unity的兼容性高。 2 UGUI基本控件 Unity用户界面系统用于快速直观地创建游戏内用户界面,使用一些包含的组件(如面板和按钮),可以为应用程序创建基本主菜单。UGUI主要包括画布、文本、图像、原始图像、按钮等基本控件。 画布是所有UI控件的根类,也可以看作所有UI控件的父物体,所有UI控件都必须在Canvas上面绘制;Text 控件也称为标签,Text 区域用于输入将显示的文本,它可以设置字体、样式、字号等内容;图像控件除了两个公共的组件(矩形变换与画布渲染器)外,默认情况下就只有一个 Image 组件,把图片转换成精灵(Sprite)格式后,精灵图片就可以拖放到 Image 的源图像中显示该图像了;原始图像控件与图像控件类似,但是原始图像控件可以显示任何纹理,向用户显示了一个非交互式的图像,它可以用于装饰、图标等;按钮是一个复合控件,其中还包含一个文本子控件,通过此子控件可设置按钮上显示的文字内容、字体、文字样式、文字大小、颜色等,与前面所讲的 Text 控件是一样的。 3 绑定鼠标单击事件 要在Unity3D中绑定按钮单击事件,可以在检查器窗口将单击事件脚本挂接到按钮组件,也可以在脚本文件中通过代码绑定鼠标单击事件。在脚本中绑定鼠标事件更具灵活性,下面简要介绍: 首先,创建一个C#脚本命名为mClickA.cs。获取名称为Button按钮后,为按钮绑定onClick事件,其中,ClickmeA为无参方法,ClickmeB为传参方法,根据实际情况选择合适方法即可。脚本完成后挂接到按钮或者场景其他任何对象均可。 public class mClickA : MonoBehaviour { privateGameObjectbtnObj; private void Start() { btnObj = GameObject.Find("Button"); btnObj.GetComponent btnObj.GetComponent } voidClickmeA() { print("单击鼠标!"); } voidClickmeB(string infostr) { print(infostr); } } 4场景材质设置与获取 场景模型制作完成之后,贴图时不可避免地要接触到的组件便是MeshRenderer。获取到对象MeshRenderer组件后,通过material(材质)设置与获取对象的材质、颜色。 (1)设置对象颜色 对象.GetComponent voidClickmeA() { GameObjectobj = GameObject.Find("Sphere"); obj.GetComponent } (2)设置对象材质 对象.GetComponent voidClickmeA() { GameObjectobj = GameObject.Find("Sphere"); obj.GetComponent } (3)获取对象颜色 对象. GetComponent voidClickmeA() { Color OldColor = GetComponent Debug.Log(OldColor); } (4)获取对象材质 对象. GetComponent voidClickmeA() { Material mtl =GetComponent Debug.Log(mtl); } 5结束语 作为虚拟现实技术开发的利器,Unity3D提供了丰富的UI组件,为开发者提供了极大的方便。通过对MeshRenderer组件操作完成场景材质的动态设置与获取,轻松实现虚拟家装、虚拟看车场景中看似神奇的动态材质切换。 参考文献: [1] 吴亚峰.Unity游戏案例开发大全[M].北京:人民邮电出版社, 2018. [2] 李婷婷.Unity3D虚拟现实游戏开发[M].北京:清华大学出版社,2018. [3] 徐志刚,胡常英.基于Unity3D的虚拟汽车试验场漫游系统[J].计算机技术与发展,2019,29(5):112-115. 【通联編辑:唐一东】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。