保留版权,转载请注明出处: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

Unity学习笔记(二)——第一个Unity项目Hello Unity的更多相关文章

  1. Maven学习笔记之第一个Maven项目(Linux)

    Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven reposito ...

  2. Unity资源打包学习笔记(二)、如何实现高效的unity AssetBundle热更新

    转载请标明出处:http://www.cnblogs.com/zblade/ 0x01 目的 在实际的游戏开发中,对于游戏都需要进行打补丁的操作,毕竟,测试是有限的,而bug是无法预估的.那么在手游中 ...

  3. Struts2学习笔记(二):第一个Struts2应用

    一.创建Action类. 创建工程Struts2Demo struts 2中的Action类并不需要继承struts 2中的某个父类,普遍的java类就可以. 在org.sunny.user.acti ...

  4. WIX 学习笔记 - 2 第一个WIX 项目 HelloWIX

    程序员们都非常熟悉 Hello World!,基本上所有的语言书都以打印一个 Hello World! 作为第一个代码示例. 我们也要发扬代码界的优良传统,使用 Hello WIX! 作为我们的入门示 ...

  5. maven学习笔记(定制一个Web项目)

    创建web项目: mvn archetype:generate -DgroupId=cn.net.comsys.ut4.simpleweb -DartifactId=simple-web -Dpack ...

  6. Unity学习笔记草稿篇(一)为unity配置添加VS智能感知

    1. 打开要编辑的配置文件: 2. 菜单栏 -> xml -> 架构(schema) -> 添加或使用xsd.如下图所示:

  7. amazeui学习笔记二(进阶开发1)--项目结构structure

    amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...

  8. 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

  9. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  10. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

随机推荐

  1. java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片

    我们假设在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,经常对方的站点有defence机制,会给你的http请求返回500错误,仅仅要是同样IP就请求不到数据,这时候我们仅仅能去重新启动路由器 ...

  2. webform中几个常用的控件

    一,简单控件 1,Lable——标签:在网页中呈现出来的时候会变成span标签 属性:Text——标签上的文字  BackColor,ForeColor——背景色,前景色 Font——字体 Bold- ...

  3. Qt之开机自启动

    Windows开机自启动的程序很多,包括系统软件.杀毒软件.一些其他安装软件等等.当然可以禁止,通过软件管理或者手动删除对应的注册表中的项即可!但是为了系统的服务或者操作上的方便,我们往往需要开机自启 ...

  4. 张佩的Dump服务

    [亦请参考: http://www.yiiyee.cn/Blog/dumpservice/ ] 张佩提供 有偿但 价格极低的Dump文件分析服务 ! . 如果你有一个Dump文件——不管是应用程序还是 ...

  5. ZOJ 1542 POJ 1861 Network 网络 最小生成树,求最长边,Kruskal算法

    题目连接:problemId=542" target="_blank">ZOJ 1542 POJ 1861 Network 网络 Network Time Limi ...

  6. 第三天学习内容 if--else

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. vim 操作指令1

    1.vim 在命令行中输入vim,进入vim编辑器 2.i 按一下i键,下端显示 –INSERT–插入命令,在vim中可能任意字符都有作用 3.Esc 退出i(插入)命令进行其它命令使用 4.:r f ...

  8. C#递归复制文件夹

    /// <param name="sources">原路徑</param> /// <param name="dest">目 ...

  9. df -h统计的信息与du -sh不一致的原因(转)

    有时候会遇到这样的问题:df -h统计一个目录,显示有约100M可用空间,使用了5G:而用du -sh统计该目录下的文件大小,却发现总共才占用了1G.也就是说,二者统计结果差距巨大. 例如: 1.df ...

  10. boost::asio网络传输错误码的一些实验结果(recv error_code)

    错误码很重要,可以由此判断网络连接到底发生了神马事情,从而驱动高层逻辑的行为.只有笼统的错误码判断的网络层是不够规范的,鄙人觉得有些错误码还是需要在网络层就区分开的,特此记录一些当前实验的错误码以及发 ...