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 ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之1033数字交换
题目 解决代码及点评 /* 功能:将一个一维数组中的偶数依次交换.例如有8个元素, 若其中第1.4.5三元素是偶数时应按下图交换. 例子: a[]={2,3,1,6 ...
- Oracle闪回flashback总结
1.说明: Ø 采用的技术. 使用的是多个技术. 1. 闪回日志 2. 回收站 3. 回滚段 无法使用回收站的操作 Drop table xxx purge; Drop ...
- dedecms的安装以及为他配置虚拟主机
一.概念: 1.CMS是:Content Manage System 内容管理系统 内容包括:商品,文章,软件,视频 2.当前市面上常用的CMS有哪些? DedeCMS: 织梦 中小型公司 ...
- 操作引入xml文件的书包(定位到指定节点)
定位到指定节点:e0.1 <chtml><we>@{_samples/test.xml:HtokID=e0.1}</we></chtml> 上述表达式表 ...
- Delphi + Asm - TBits类的学习
技术交流,DH讲解. 在D2010的classes中有个TBits类,这个类主要是位操作的. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 TBits = class privat ...
- android用shape画虚线,怎么也不显示
一直以为android的shape能画直线.虚线.矩形,圆形等.画直线也就算了.用一个view设一下高度和颜色,就能够出来一条直线了.所以说这个对我来说常常不用,圆形是能够,看看我应用里的消息提 ...
- OpenCV中遇到Microsoft C++ 异常 cv::Exception
我在实现<OpenCV2计算机视觉编程手册>第2章 2.2 节 存取像素值 中的椒盐噪声例子中遇到的程序错误. 原始输入程序: #include <opencv2/core/core ...
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...
- JSP的学习(6)——九大隐式对象及其out对象
本篇将介绍JSP中的九大隐式对象,并重点介绍其中的out对象. 我们在之前的博客<JSP的学习(1)——基础知识与底层原理>一文中已经知道,JSP最终要被翻译和转换成Servlet,在转换 ...
- Oracle实用-01:绑定变量
数据库虽然在学校系统学习过,但是在工作中真正使用起来收获又是不一样的,今天起打算将项目中使用到的技术再分享出来,不以书本的顺序,只从碰到的问题为顺序. 虽然不是纯粹的数据库工程师,但是每个程序员总免不 ...