




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
黄静虚拟现实VirtualRealityUnity游戏引擎
介绍Unity相关文件序号文件类型说明1*.unity场景2*.csC#脚本3*.jsJavaScript4*.fbx模型5*.prefab预制体6*.asset资源7*.unitypackage资源包。。。。。。脚本什么是Script(脚本)?简而言之,就是使用代码来执行一系列动作命令的特殊文本,它需要编译器来从新解读。我们需要知道脚本的使用规则。目前Unity主要支持的可用作编写游戏脚本代码的语言是C#和Javascript。本书以C#脚本为例来说明脚本编写的基本技巧。脚本模版usingUnityEngine;usingSystem.Collections;publicclassMainPlayer:MonoBehaviour{//UsethisforinitializationvoidStart(){}//UpdateiscalledonceperframevoidUpdate(){}}配置脚本编译环境MonoDevelopVisualStudioEdit-->Preference-->ExternalTools-->ExternalScriptEditor注意Unity自带的MonoDevelop编译器不支持中文注释语句。脚本语言C#ScriptUnityScript(JavaScript)用C#编写脚本C#(发音CSharp),微软开发的面向对象编程语言。由于有强大的net类库支持,以及由此衍生出的很多跨平台语言,C#逐渐成为U3D开发者推崇的程序语言,用C#编写的脚本都以cs为文件后缀名。在Unity项目Project视图-->资源Assets窗口中鼠标右键点击创建Create-->C#Script创建C#脚本文件,如图所示。脚本激活脚本绑定拖拽给场景中的游戏对象一个场景可以有多个游戏对象绑定脚本一个游戏对象可以同时绑定多个脚本拖拽给场景脚本拖拽到场景的主相机例usingUnityEngine;usingSystem.Collections;publicclassMainPlayer:MonoBehaviour{
publicstringmyName;
//Usethisforinitialization
voidStart(){
Debug.Log("Iamaliveandmynameis"+myName);
}
//Updateiscalledonceper
frame
voidUpdate(){
}}注意MonoDevelop(Builtin)编译器可能不支持中文注释语句脚本文件名和脚本中的类名保持一致调用场景Application.LoadLevel(“场景名称");Application.LoadLevel("menu");Application.LoadLevel("main");Application.LoadLevel(“help");Application.LoadLevel(0);Application.LoadLevel(1);Application.LoadLevel(2);设置关卡公有变量与私有变量Public&PrivateC#中,必须声明公有变量以便在属性面板中看到#pragmastrictprivatevarinvisibleVar:int;functionStart(){}例help.csusingUnityEngine;usingSystem.Collections;publicclasshelp:MonoBehaviour{publicTexture2Dhelppic;voidOnGUI(){GUI.DrawTexture(newRect(0,0,Screen.width,Screen.height),helppic,ScaleMode.StretchToFill);if(GUI.Button(newRect(Screen.width-380,Screen.height-80,320,80),"back")){Application.LoadLevel("menu");}}}用C#编写脚本继承MonoBehaviour基类例publicclasskeyboardback:MonoBehaviour{。。。}用C#编写脚本类数据成员以及处理这些数据成员相应函数的集合命名空间可以被视为用来存放类的容器导入命名空间usingUnityEngine;UsingSystem.Collections;几个重要名词控件属性方法事件控件是窗体中具有特定功能的元素按钮Button标签Label文本框TextField。。。GUI.Button(Rec(10,10,Screen.width,30),”开始”)属性控件所具有的一组特征名称颜色位置大小。。。例GUI.color=Color.yellow;GUI.backgroundColor=Color.black;方法(函数)控件所具有的功能或操作函数-用于实现某种特定功能在C#中都是以类方法成员的方式来实现脚本常用函数voidOnGUI()函数Unity提供了使用脚本创建GUI界面的能力,Unity中的界面设计是通过创建脚本并定义OnGUI方法来执行的。所有的GUI渲染都应该在该方法中执行或者在一个被OnGUI方法调用的函数中执行。GUI界面设计图形用户界面(GraphicsUserInterface,简称GUI)在程序设计中一直占有很重要的位置。GUI在游戏的开发中占有重要的地位,游戏的GUI是否友好,使用是否方便,很大程度上决定了玩家的游戏体验。Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。在Unity中使用GUI来完成GUI的绘制工作。Unity界面控件控件名称作用Label绘制文本和图片Box绘制一个图形框Button绘制按钮,响应单击事件RepeatButton绘制一个处理持续按下事件的按钮TextField绘制一个单行文本输入框PasswordField绘制一个密码输入框TextArea绘制一个多行文本输入框Toggle绘制一个开关Toolbar绘制工具条SelectionGrid绘制一组网格按钮HorizontalScrollbar绘制一个水平方向的滑动条VerticalScrollbar绘制一个垂直方向的滑动条Window绘制一个窗口,可以用于放置控件GUI控件定位GUI的控件一般都需要传Rect参数来指定屏幕绘制区域,例如Rect(0,10,200,300),对应的屏幕矩形区域左上角的坐标为(0,10),宽度为200,高度为300,在UnityGUI中,屏幕坐标系以左上角为原点。屏幕坐标系GUI界面设计voidOnGUI()方法界面绘制方法,所有界面的绘制都需要在这个方法中实现GUI的方法和属性GUI.DrawTexture();GUI.Button();GUI.Label();GUI.Color=Color.green;GUI.backgroundColor=Color.yellow;GUI.SkinGUISkinProjectCreateGUISkin皮肤控件voidOnGUI(){GUI.DrawTexture(newRect(0,0,Screen.width,Screen.height),helppic,ScaleMode.StretchToFill);
if(GUI.Button(newRect(Screen.width–380,Screen.height-80,320,80),"back")){Application.LoadLevel("menu");}}
程序段6-4voidOnGUI(){//GUI.color=Color.red;GUI.Label(newRect(10,10,100,200),"HelloWorld!");GUI.Label(newRect(100,100,texture.width/4,texture.height/4),texture);}GUI.Window()方法第一个参数表示窗口的ID第二个参数表示窗口的显示区域第三个参数表示回调方法名称,窗口中的所有视图控件将写入这个方法第一个参数表示窗口的标题名称窗口publicRectwindowRect=newRect(20,20,120,500);publicboolWindow;voidStart(){ Window=false; }voidOnMouseDown(){Debug.Log("Click"); Window=true;}voidOnGUI(){ if(Window)windowRect=GUI.Window(0,windowRect,DoMyWindow,"励耘楼");}voidDoMyWindow(intwindowID){ GUI.Label(newRect(10,20,100,30),"励耘楼");if(GUI.Button(newRect(10,250,100,20),"关闭"))Window=false;}程序段6-5usingUnityEngine;usingSystem.Collections;
publicclassQuitCsript:MonoBehaviour//创建类QuitCscript{
RectwindowRect=newRect(20,20,100,50);//声明矩形对象,尺寸20,20,100,50
GUI.WindowFunctionwindowFunction;//
voidOnGUI()//调用OnGUI方法
{
windowRect=GUI.Window(0,windowRect,DoMyWindow,"System");//开窗大小windowRect
}
voidDoMyWindow(intwindowID)//调用窗口设计函数{
if(GUI.Button(newRect(10,20,80,20),"Quit"))//创建退出Quit按钮{
Application.Quit();//如果按下按钮,程序退出
}
}
//Usethisforinitialization
voidStart(){
windowFunction=DoMyWindow;//程序一开始就调出窗口
}
//Updateiscalledonceperframe
voidUpdate()//更新函数中无操作{
}}GUI与GUILayout区别GUI---固定按钮,靠坐标定位GUILayout---灵活布局,自适应布局按钮线性布局GUILayout.BeginVertical();。。。//垂直布局
GUILayout.EndVertical();GUILayout.BeginHorizontal();。。。//水平布局
GUILayout.EndHorizontal();水平布局GUILayout.BeginHorizontal();GUILayout.Button(“按钮1”);GUILayout.Button(“按钮2”);GUILayout.Button(“按钮3”);
GUILayout.EndHorizontal();垂直布局GUILayout.BeginVertical();GUILayout.Button(“按钮1”);GUILayout.Button(“按钮2”);GUILayout.Button(“按钮3”);
GUILayout.EndVertical();UGUIUI界面中的Canvas画布voidAwake()函数初始化函数,在游戏开始时系统自动调用,即在当前脚本对象被加载的时候调用一次。一般用来创建变量之类的东西。voidStart()函数初始化函数,在当前脚本对象生成完成后调用一次。它在所有Awake函数运行完之后(一般是这样,但不一定),在所有Update函数前系统自动调用。一般用来给变量赋值。程序段6-2usingUnityEngine;usingSystem.Collections;publicclassAwakeAndStart:MonoBehaviour{voidAwake(){Debug.Log("Awakecalled.");}
voidStart(){Debug.Log("Startcalled.");}}voidUpdate()函数在脚本加载完成后每帧调用一次,通常将用户输入操作写在此函数内,或者在判断某个时间点、或者某个布尔变量是否为真true然后执行或者调用其他操作时使用该方法。程序段6-3
usingUnityEngine;usingSystem.Collections;publicclasskeyboardback:MonoBehaviour{ //Updateiscalledonceperframe voidUpdate(){if(Input.GetKeyDown(KeyCode.F1)){Application.LoadLevel("help");} }}事件和事件驱动程序中的一些操作称为事件单击按键事件驱动一旦发生事件就执行相应事件处理程序段的程序设计方式交互控制键盘鼠标键盘交互按下事件Input.GetKeyDown(KeyCode.Space)抬起事件Input.GetKeyUp(KeyCode.Space)任意键事件Input.anyKeyDownusingUnityEngine;usingSystem.Collections;publicclasskeyboardback:MonoBehaviour{ //Usethisforinitialization voidStart(){
}
//Updateiscalledonceperframe voidUpdate(){if(Input.GetKeyDown(KeyCode.w)){Debug.log(“您按下了w键”);}
}}鼠标交互按下事件Input.GetMouseButtonDown(0)左键Input.GetMouseButtonDown(1)右键Input.GetMouseButtonDown(2)中键
voidUpdate(){if(Input.anyKeyDown||Input.GetMouseButtonDown(0))Application.LoadLevel("menu");}抬起事件Input.GetMouseButtonUp(0)左键Input.GetMouseButtonUp(1)右键Input.GetMouseButtonUp(2)中键Cube的技巧可作为模型的子物体模型也可作为Cube的子物体鼠标点击模型判断用将脚本赋给Cube刚体物体的鼠标点击事件脚本拖给刚体物体voidOnMouseDown(){Debug.Log("Click"); Window=true; }代码示例usingUnityEngine;usingSystem.Collections;publicclassMouseClick:MonoBehaviour{ publicRectwindowRect=newRect(20,20,120,500); publicboolWindow; //Usethisforinitialization voidStart(){ Window=false; } //Updateiscalledonceperframe voidUpdate(){ } voidOnMouseDown(){Debug.Log("Click"); Window=true; } voidOnGUI(){ if(Window)windowRect=GUI.Window(0,windowRect,DoMyWindow,"励耘楼");} voidDoMyWindow(intwindowID){ GUI.Label(newRect(10,20,100,30),"励耘楼");if(GUI.Button(newRect(10,250,100,20),"关闭"))Window=false;}}多媒体播放声音视频音乐的播放音乐也是一种组件,可绑定在某个游戏对象上GameObjectCreateEmptyComponentAudioAudioSourcePlayOnAwake开机自动播放Loop循环播放音频格式:aiff,wav,mp3,ogg音乐脚本publicAudioSourcemusic;将绑定音乐的游戏对象拖拽给脚本中的AudioSource对象music.Play();music.Stop();music.Pauce();publicGameObjectMusic;staticpublicfloatMusicValue=5.0f;Music.audio.volume=Option.MusicValue/10;Music.audio.Play();多媒体视频QuickTime播放器将视频设置为材质需要使用Movietexture属性来添加视频视频格式:.mov,.mpg,.mpeg,.mp4,.avi,.asf创建平面相机对准平面给相机绑定脚本将视频拖拽给脚本中的对象MpublicMovieTextureM;voidStart(){M.loop=true;M.Play();}将平面坐标置为0,0,0,平面旋转角为0,0,0主相机置为0,3.8,0,主相机旋转角置为90,180,0平行光位置为0,5,0,平行光旋转角置为90,180,0M.Play();M.Pause();M.Stop();M.isPlaying属性M.loop属性GUI播放视频PublicMovieTexturemovTexture;GUI.DrawTexture(newRect(0,0,Screen.width,Screen.height),movTexture,ScaleMode.StretchToFill);视频播放Unity支持的播放视频格式有.mov、.m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 31902-2025服装衬布外观疵点检验方法
- 西安科技大学高新学院《装饰艺术》2023-2024学年第一学期期末试卷
- 东北财经大学《中国民族民间舞》2023-2024学年第二学期期末试卷
- 芜湖职业技术学院《影视编辑与制作》2023-2024学年第二学期期末试卷
- 急诊清创操作护理
- 世界地理与旅游
- 摄影基础第14节镜头的分类与选用
- 2025年ASQ质量经理(CMQ OE)认证考试中文版题库大全-上部分(含答案解析)
- 浙江省医疗卫生事业单位招聘-基础知识类历年考试真题库(含答案)
- 影像诊断骨折
- 分供方准入资格预审表(劳务、专业分包商)
- XX化工有限责任公司维保方案
- 基础会计课件(完整版)
- 品质异常处罚细则及奖罚制度
- 二年级下册心理健康教案-第二十四课 帮爸爸妈妈分担 妈妈谢谢您|北师大版
- CT图像伪影及处理
- 诊所备案申请表格(卫健委备案)
- 人教PEP版五年级英语下册-《课时学练测》全册含答案
- 锅炉水冷壁安装作业指导书
- 《雷锋叔叔_你在哪里》说课稿
- 赞美诗歌400首全集
评论
0/150
提交评论