1、 private int screenHeight; / Use this for initialization void Start () /得到屏幕宽高 screenWidth = Screen.width; screenHeight = Screen.height; /得到图片宽高 imageWidth = imageTexture.width; imageHeight = imageTexture.height; void OnGUI() /将文字内容显示在屏幕中 GUI.Label(new Rect(100, 10, 100, 30), hello unity); /将贴图显示在屏幕
2、中 GUI.Label(new Rect(100, 120, imageWidth, imageHeight),imageTexture); / Update is called once per frame void Update () Button public Texture buttonTexture; private string str; str=请点击按钮!; GUI.Label(new Rect(10, 10, Screen.width, 30), str); if(GUI.Button(new Rect(10,50,buttonTexture.width,buttonText
3、ure.height),buttonTexture) /点击按钮修改提示信息 str = 您点击了图片按钮 /设置按钮中文字的颜色 GUI.color = Color.green; /设置按钮的背景色 GUI.backgroundColor = Color.black;public class NewBehaviourScript : /自定义皮肤 public GUISkin liuna; /单选是否选中 private bool choose = false; /拖动窗口的位置 private Rect windowRect = new Rect (20, 20, 120, 50); /输
4、入框中默认显示 private string edit= 请输入字符串 void OnGUI() /设置GUI皮肤为我们自定义皮肤 GUI.skin = liuna; /绘制自定义按钮 GUI.Button(new Rect (100,100,100,100),点我 /单项选择 choose = GUI.Toggle(new Rect(10, 50, 100, 30), choose, 单项选择 /输入框 edit = GUI.TextField (new Rect (200, 10, 200, 20), edit, 25); /注册窗口 windowRect = GUI.Window (0,
5、 windowRect, setWindow, 这是一个窗口 /设置GUI皮肤为系统定义皮肤 GUI.skin = null; /绘制系统自带按钮 void setWindow (int windowID) /创建一个可以自由拖动的窗口 GUI.DragWindow ();3. 熟悉GUILayout的使用,练习使用GUILayout的水平线性布局和垂直线性布局,并加适当偏移。public class NewBehaviourScript1 : /开始一个显示区域 GUILayout.BeginArea (new Rect (100,100,200,60); /开始最外层横向布局 GUILay
6、out.BeginHorizontal (); /嵌套一个纵向布局 GUILayout.BeginVertical (); GUILayout.Box(One /两个box中间偏移10像素 GUILayout.Space (10);Two /结束嵌套的纵向局部 GUILayout.EndVertical (); /两个纵向布局中间偏移20像素 GUILayout.Space (20);ThreeFour /结束最外层横向布局 GUILayout.EndHorizontal (); /结束显示区域 GUILayout.EndArea(); 4. 熟悉2D贴图的绘制和帧动画的实现方法,练习在界面中
7、绘制静态图2D贴图 private Texture2D texSingle; /private Object texAll; if (GUI.Button(new Rect (0, 10, 100, 50), 加载一张图片) if (texSingle = null) texSingle = (Texture2D)Resources.Load(flower0/0 if (texSingle!=null) GUI.DrawTexture(new Rect(110,10,120,120),texSingle,ScaleMode.StretchToFill,true,0);帧动画 /动画数组 pri
8、vate Object animUp; private Object animDown; private Object animLeft; private Object animRight; /地图贴图 private Texture2D map; /当前人物动画 private Object tex; /人物X坐标 private int x; /人物Y坐标 private int y; /帧序列 private int nowFram; /动画帧的总数 private int mFrameCount; /限制一秒多少帧 private float fps = 10; /限制帧的时间 pri
9、vate float time = 0; x=200; y=200; /得到帧动画中的所有图片资源 animUp = Resources.LoadAll(up animDown = Resources.LoadAll(down animLeft = Resources.LoadAll(left animRight = Resources.LoadAll(right /得到地图资源 map = (Texture2D)Resources.Load(map/ground /设置默认动画 tex = animUp; /绘制贴图 GUI.DrawTexture(new Rect(0,0,Screen.w
10、idth,Screen.height), map, ScaleMode.StretchToFill, true, 0); /绘制帧动画 DrawAnimation(tex,new Rect(x,y,32,48); /点击按钮移动人物 if(GUILayout.RepeatButton(向上) y-=2; tex = animUp;向下 y+=2; tex = animDown;向左 x-=2; tex = animLeft;向右 x+=2; tex = animRight; /点击上下左右键移动人物 if(Input.GetKey(KeyCode.UpArrow) if(Input.GetKe
11、y(KeyCode.DownArrow) if(Input.GetKey(KeyCode.LeftArrow) if(Input.GetKey(KeyCode.RightArrow) void DrawAnimation(Object tex, Rect rect) /绘制当前帧 GUI.DrawTexture(rect, (Texture2D)texnowFram, ScaleMode.StretchToFill, true, 0); /计算限制帧时间 time += Time.deltaTime; /超过限制帧则切换图片 if(time = 2.0 / fps) /帧序列切换 nowFra
12、m+; /限制帧清空 time = 0; /超过帧动画总数从第0帧开始 if(nowFram = tex.Length) nowFram = 0; 实验二 Unity游戏脚本软件122班 刘娜 1225131. 熟悉及掌握MonoDevelop脚本编辑器的使用方法。2. Unity脚本的生命周期。3. 熟练使用脚本来操作游戏对象。1. 熟悉MonoDevelop脚本编辑器的使用方法,联系实现脚本调试。2. 编程实现创建游戏对象(立方体,球体),给游戏对象命名,改变颜色,添加刚体组件。3. 分别通过名称、标签获得游戏对象,通过标签获得多个游戏对象。4. 通过脚本控制游戏对象,改变游戏对象的位置,
13、旋转游戏对象,缩放游戏对象。创建C#脚本:在脚本中编辑代码 void Update () if (GUI.Button (new Rect (0, 0, 100, 100), 创建立方体 GameObject objCube=GameObject.CreatePrimitive(PrimitiveType.Cube); objCube.AddComponent(Rigidbody objCube.name=Cube objCube.renderer.material.color=Color.blue; if (GUI.Button (new Rect (100, 0, 100, 100), 创
14、建球体 GameObject objSphere=GameObject.CreatePrimitive(PrimitiveType.Sphere); objSphere.AddComponent( objSphere.name=Sphere objSphere.renderer.material.color=Color.green;受到重力降落:通过名称获得游戏对象: private GameObject objCube; private GameObject objSphere; private bool isCubeRoate=false; private bool isSphereRoa
15、te=false; private string CubeInfo=旋转立方体 private string SphereInfo=旋转球体 objCube=GameObject.Find( objSphere=GameObject.Find( if (isCubeRoate) if(objCube)/档立方体不为null时旋转 objCube.transform.Rotate(0.0f,Time.deltaTime*200,0.0f); if (isSphereRoate) if(objSphere)/档立方体不为null时旋转 objSphere.transform.Rotate(0.0f
16、,Time.deltaTime*200,0.0f); if (GUI.Button (new Rect (0, 0, 100, 100), CubeInfo) isCubeRoate = true; CubeInfo = 停止旋转 else isCubeRoate = false; CubeInfo = if (GUI.Button (new Rect (0,100 , 100, 100), SphereInfo) isSphereRoate = true; SphereInfo = else isSphereRoate = false;通过标签来获取游戏对象给Cube添加一个标签代码改为:v
17、oid Start () objCube=GameObject.FindWithTag(tag1通过标签获取多个游戏对象: objCube=GameObject.FindGameObjectsWithTag(改变游戏对象的位置:public class NewBehaviourScript2 : private float x=0.0f; private float y=0.0f; private float z=0.0f; private GameObject obj; obj=GameObject.Find( GUI.Box (new Rect(0,0,100,100),移动立方体x轴 x
18、 = GUILayout.HorizontalSlider (x, -10.0f, 10.0f, GUILayout.Width (400); GUI.Box (new Rect(0,100,100,100),移动立方体y轴 y = GUILayout.HorizontalSlider (y, -10.0f, 10.0f, GUILayout.Width (400); GUI.Box (new Rect(0,200,100,100),移动立方体z轴 z= GUILayout.HorizontalSlider (z, -10.0f, 10.0f, GUILayout.Width (400); obj.transform.position = ne