保留版权,转载请注明出处: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. boost uuid 学习笔记

    #include <vector>#include <iostream>#include <boost/uuid/uuid.hpp>#include <boo ...

  2. SilkTest Q&A 12

    111. 谁能告诉我,正在执行的SilkTest的log是存放在哪里? 答案1: 用下面的命令可以导出文本格式的log "c:/program files/segue/silktest/pa ...

  3. 以交互方式使用exp/imp的演示

    众所周知,用exp/imp对数据库进行逻辑备份.包含表.用户,整个数据库,我们通常所熟悉的是使用命令行指定參数的方式来做的.以下我来演示一下不太经常使用的以交互方式的操作,操作非常easy.就是仅仅要 ...

  4. QtWebkit中如何将网页内容转为图片

    原地址:http://www.cnblogs.com/baizx/archive/2010/07/31/1789573.html 如何将webkit中的渲染结果也就是网页画面转换为图片   用抓图软件 ...

  5. 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)

    由于本人愚钝,整合ssm框架真是费劲了全身的力气,所以打算写下这篇文章,一来是对整个过程进行一个回顾,二来是方便有像我一样的笨鸟看过这篇文章后对其有所帮助,如果本文中有不对的地方,也请大神们指教. 一 ...

  6. 将网站部署到服务器上出现_STORAGE_WRITE_ERROR_问题

    用的thinkphp3.2的框架,在本地运行没有问题,部署到服务器上(基于centos的LAMP环境)即报错,报错信息如下(完全看不懂...):求大神帮帮忙~~~~(>_<)~~~~ :( ...

  7. javascript模板引擎之artTemplate 学习笔记

    <div id="content"></div><div id="content1"></div><h1& ...

  8. org.apache.hadoop.ipc.Client: Retrying connect to server异常的解决

    检查发现是DataNode一直连接不到NameNode. 检查各个节点在etc/hosts中的配置是否有127.0.1.1 xxxxxx.如果有把其屏蔽或者删除,重启各节点即可. 原因:127.0.1 ...

  9. Entity - 使用EF框架进行增删改查 - 模型先行

    模型先行:先创建数据库实体模型,然后再进行数据库的增删改查. 基本步骤是不变的,可参照 <Entity - 使用EF框架进行增删改查 - 数据库先行> 其中的不同是,在创建数据库实体模型的 ...

  10. Python Base64转码解码

    Python Base64 提供了好几种方法例如: encode, decode, encodestring, decodestring, b64encode, b64decode, standard ...