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
Unity学习笔记(二)——第一个Unity项目Hello Unity的更多相关文章
- Maven学习笔记之第一个Maven项目(Linux)
Maven是Apache旗下的管理Java项目jar包的项目管理工具,有了它可以很方便构建和管理我们的Java项目,你不必在互联网上逐个查找你需要的第三方jar包,你只需在maven reposito ...
- Unity资源打包学习笔记(二)、如何实现高效的unity AssetBundle热更新
转载请标明出处:http://www.cnblogs.com/zblade/ 0x01 目的 在实际的游戏开发中,对于游戏都需要进行打补丁的操作,毕竟,测试是有限的,而bug是无法预估的.那么在手游中 ...
- Struts2学习笔记(二):第一个Struts2应用
一.创建Action类. 创建工程Struts2Demo struts 2中的Action类并不需要继承struts 2中的某个父类,普遍的java类就可以. 在org.sunny.user.acti ...
- WIX 学习笔记 - 2 第一个WIX 项目 HelloWIX
程序员们都非常熟悉 Hello World!,基本上所有的语言书都以打印一个 Hello World! 作为第一个代码示例. 我们也要发扬代码界的优良传统,使用 Hello WIX! 作为我们的入门示 ...
- maven学习笔记(定制一个Web项目)
创建web项目: mvn archetype:generate -DgroupId=cn.net.comsys.ut4.simpleweb -DartifactId=simple-web -Dpack ...
- Unity学习笔记草稿篇(一)为unity配置添加VS智能感知
1. 打开要编辑的配置文件: 2. 菜单栏 -> xml -> 架构(schema) -> 添加或使用xsd.如下图所示:
- amazeui学习笔记二(进阶开发1)--项目结构structure
amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...
- 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记
注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...
- amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules
amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...
- amazeui学习笔记二(进阶开发2)--Web组件简介Web Component
amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...
随机推荐
- [Oracle]TRIGGER
题外话: Oracle 的使用. 以前客户方用的是SQL SERVER,一直在用SQL SERVER,感觉SQL SERVER的用户体验非常好. 不管是开发环境的界面布局到SQL 的写法上,感觉写起来 ...
- ASP.NET - 使用 XML
对XML文件进行简单的增加,删除,修改,查看等功能. XML代码: <?xml version="1.0" encoding="UTF-8"?> & ...
- Writing a Windows Shell Extension(marco cantu的博客)
Writing a Windows Shell Extension This is a technical article covering the content of my last week s ...
- QT对话框中show和exec的区别
转自:http://hi.baidu.com/wangjuns8/blog/item/24b382460dd1c1338694737d.html QDialog的显示有两个函数show()和exec( ...
- 快速安装多系统(xp与win7)
具体方法: 1.利用pe安装xp系统 2.xp下,空出一个分区,用于安装win7 3.进入pe下,安装win7系统到空出的分区 4.win7正常启动后,会覆盖原来xp的启动方式 5.再次进入pe,利用 ...
- javascript 回调函数应用
回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你”这是一个异步 ...
- 两个栈实现队列+两个队列实现栈----java
两个栈实现队列+两个队列实现栈----java 一.两个栈实现一个队列 思路:所有元素进stack1,然后所有出s ...
- 中间件(Middleware)
中间件(Middleware) ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下 ...
- 【转】有效修改max open files/ulimit -n
[转]有效修改max open files/ulimit -n_追梦20121222_新浪博客 [转]有效修改max open files/ulimit -n (2011-11-18 0 ...
- 双向DFS模板题
B. Book of Evil time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...