zoukankan      html  css  js  c++  java
  • Unity学习笔记(二)——第一个Unity项目Hello Unity

    保留版权,转载请注明出处:http://blog.csdn.net/panjunbiao/article/details/9318811

    在这一篇文章里,参照宣雨松的《Unity 3D游戏开发》第38页的例子,用C#写出我的第一个Unity项目 Hello Unity。

    第一步,新建项目:


    点击“Create Project”创建项目之后,我们看到项目中只有一个摄像机对象“Main Camera”。


    并且Unity为我们创建了一个未命名(untitled)的场景,点击“File -> Save Scene”可以设定场景的名字并保存。


    点击保存场景菜单之后,可以在保存场景窗口中输入场景的名字,以及保存的文件夹位置:


    保存之后,我们看看Assets文件夹:

    可以看到刚刚保存的场景文件“Hello Scene.unity”。

    现在我们来向这个场景添加一个平面(Plane)、一个立方体(Cube)和一个球体(Sphere):


    放入平面之后,为了方便起见,我们将平面的中心位置调整到(0,0,0),调整的方法是在场景中选中平面,然后在右边Inspector视图中将Position的X、Y、Z设置为0即可,如下:


    同样的方法插入立方体和球体,并把他们手工调整到你喜欢的位置(例如在平面上方)

    这些物体创建之后是没有颜色的,如下面:


    为此我们需要给它们添加材质,例如平面添加一个绿色材质,立方体添加一个红色材质,球体添加一个蓝色材质。

    点击“Assets --> Create --> Material”菜单创建材质:


    在Assets材质视图中,将新创建的材质命名为Red:


    在Inspector视图中,将Red材质修改为红色:


    然后将Assets视图中的红色材质小球拖到场景视图中的立方体上面,此时立方体变成红色,Inspector视图中也会包含材质的信息:


    同样的方法,创建蓝色、绿色材质,并把平面变成绿色,球体变成蓝色:


    这个时候物体虽然有了颜色,但看起来还是很暗的,需要设置光源,例如我们在平面上方放置一个点光源,点击菜单“GameObject --> Create Other --> Point Light”:


    这样场景就被照亮啦,通过Game视图或者点击运行按钮,就可以看到游戏中的场景了,如果看不到,可能是摄像机的位置和角度的问题,调整好就OK。

    现在,我们想做一些最简单的控制,例如控制立方体旋转和移动,并且在屏幕上显示按钮和文字,如何做到呢?

    先来创建一个脚本,方法是点击菜单“Assets --> Create --> C# Script”,在Assets视图中会出现一个脚本资源,将它命名为“HelloScript”:


    双击脚本图标,打开MonoDevelop编辑器,写入下面的代码:

    using UnityEngine;
    using System.Collections;
    
    public class HelloScript : MonoBehaviour {
    	
    	//对象的移动速度
    	//translate speed of the object
    	int translateSpeed = 10;
    	
    	//对象的旋转速度
    	//rotation speed of the opbject
    	int rotateSpeed = 500;
    	
    
    	// Use this for initialization
    	void Start () {
    	
    	}
    	
    	// Update is called once per frame
    	void Update () {
    		//如果监测到W键按下,则对象向上移动
    		if (Input.GetKey(KeyCode.W)) {
    			transform.Translate (Vector3.up * Time.deltaTime * translateSpeed);
    		}
    		//如果监测到S键按下,则对象向下移动
    		if (Input.GetKey(KeyCode.S)) {
    			transform.Translate (Vector3.down * Time.deltaTime * translateSpeed);
    		}
    		//如果监测到A键按下,则对象向左移动
    		if (Input.GetKey(KeyCode.A)) {
    			transform.Translate (Vector3.left * Time.deltaTime * translateSpeed);
    		}
    		//如果监测到D键按下,则对象向右移动
    		if (Input.GetKey(KeyCode.D)) {
    			transform.Translate (Vector3.right * Time.deltaTime * translateSpeed);
    		}
    		//如果监测到Q键按下,则对象向左旋转
    		if (Input.GetKey(KeyCode.Q)) {
    			transform.Rotate(Vector3.up * Time.deltaTime * (rotateSpeed));
    		}
    		//如果监测到E键按下,则对象向右旋转
    		if (Input.GetKey(KeyCode.E)) {
    			transform.Rotate(Vector3.up * Time.deltaTime * (-rotateSpeed));
    		}
    	}
    	
    	void OnGUI() {
    		//显示“向左旋转”按钮并设置事件响应脚本
    		//Display Turn Left button and set event
    		if (GUI.Button(new Rect(10, 10, 70, 30), "Turn Left")) {
    			transform.Rotate(Vector3.up * Time.deltaTime * (rotateSpeed));
    		}
    		
    		//显示“向右旋转”按钮并设置事件响应脚本
    		//Display Turn Right button and set event
    		if (GUI.Button(new Rect(170, 10, 70, 30), "Turn Right")) {
    			transform.Rotate(Vector3.up * Time.deltaTime * (-rotateSpeed));
    		}
    		
    		//显示对象的位置和角度
    		//Display position of the object.
    		GUI.Label(new Rect(250, 10, 200, 30), "Location: " + transform.position);
    		GUI.Label(new Rect(250, 50, 200, 30), "Rotation: " + transform.rotation);
    	}
    }
    

    例如我们想用该脚本控制立方体,只需要将脚本资源从Assets视图拖到场景Scene视图中的立方体对象即可。

    现在,我们就可以运行第一个“游戏”啦:


    参考资料:宣雨松《Unity 3D游戏开发》第38页。

    相关原代码已放到CSDN CODE,请点击打开:CODE

  • 相关阅读:
    uniapp--悬浮可拖动按钮-实现思路
    js获取指定日期的前一天/后一天
    适配
    使用了@Slf4j log没有info的方法 .info()方法爆红或者log爆红
    用hexo在本地搭建自己的博客
    gulp 前端构建工具使用
    springboot+idea 热部署
    配置DNS服务器转发器
    windows server2008 r2安装DNS服务器
    卸载jdk1.7
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3188395.html
Copyright © 2011-2022 走看看