保留版权,转载请注明出处: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编辑器,写入下面的代码:

  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class HelloScript : MonoBehaviour {
  5.  
  6. //对象的移动速度
  7. //translate speed of the object
  8. int translateSpeed = 10;
  9.  
  10. //对象的旋转速度
  11. //rotation speed of the opbject
  12. int rotateSpeed = 500;
  13.  
  14. // Use this for initialization
  15. void Start () {
  16.  
  17. }
  18.  
  19. // Update is called once per frame
  20. void Update () {
  21. //如果监测到W键按下,则对象向上移动
  22. if (Input.GetKey(KeyCode.W)) {
  23. transform.Translate (Vector3.up * Time.deltaTime * translateSpeed);
  24. }
  25. //如果监测到S键按下,则对象向下移动
  26. if (Input.GetKey(KeyCode.S)) {
  27. transform.Translate (Vector3.down * Time.deltaTime * translateSpeed);
  28. }
  29. //如果监测到A键按下,则对象向左移动
  30. if (Input.GetKey(KeyCode.A)) {
  31. transform.Translate (Vector3.left * Time.deltaTime * translateSpeed);
  32. }
  33. //如果监测到D键按下,则对象向右移动
  34. if (Input.GetKey(KeyCode.D)) {
  35. transform.Translate (Vector3.right * Time.deltaTime * translateSpeed);
  36. }
  37. //如果监测到Q键按下,则对象向左旋转
  38. if (Input.GetKey(KeyCode.Q)) {
  39. transform.Rotate(Vector3.up * Time.deltaTime * (rotateSpeed));
  40. }
  41. //如果监测到E键按下,则对象向右旋转
  42. if (Input.GetKey(KeyCode.E)) {
  43. transform.Rotate(Vector3.up * Time.deltaTime * (-rotateSpeed));
  44. }
  45. }
  46.  
  47. void OnGUI() {
  48. //显示“向左旋转”按钮并设置事件响应脚本
  49. //Display Turn Left button and set event
  50. if (GUI.Button(new Rect(10, 10, 70, 30), "Turn Left")) {
  51. transform.Rotate(Vector3.up * Time.deltaTime * (rotateSpeed));
  52. }
  53.  
  54. //显示“向右旋转”按钮并设置事件响应脚本
  55. //Display Turn Right button and set event
  56. if (GUI.Button(new Rect(170, 10, 70, 30), "Turn Right")) {
  57. transform.Rotate(Vector3.up * Time.deltaTime * (-rotateSpeed));
  58. }
  59.  
  60. //显示对象的位置和角度
  61. //Display position of the object.
  62. GUI.Label(new Rect(250, 10, 200, 30), "Location: " + transform.position);
  63. GUI.Label(new Rect(250, 50, 200, 30), "Rotation: " + transform.rotation);
  64. }
  65. }

例如我们想用该脚本控制立方体,只需要将脚本资源从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. 理解javascript中的for语句

    程序实现中经常要用到循环语句,其中for循环是多数语言都有的.在javascript中,for循环有几种不同的使用情况,下面就分别来讲述我的理解. 第一种:(通常情况,循环执行相关操作) var ob ...

  2. C#面试-总结

    1.override,overload的区别(鲁班联盟面试题) 笔试场景: 当时写反了区别 正确答案: override(重写,覆盖) 1.方法名.参数.返回值相同. 2.子类方法不能缩小父类方法的访 ...

  3. C++学习笔记3

    函数小结 : 函数是有名字的计算单元,对程序(就算是小程序)的结构化至关重要. 函数的定义由返回类型.函数名.形參表(可能为空)以及函数体组成.函数体是调用函数时运行的语句块. 在调用函数时,传递给函 ...

  4. JQuery - 留言之后,不重新加载数据,直接显示发表内容

    留言板中,发表信息的时候,使用Ajax存储到后台数据库,如果存储成功,不重新加载数据库,直接显示发表内容. 代码: var Nicehng = ''; var kkimgpath = ''; var ...

  5. linux添加用户

    useradd  -M -s /sbin/nologin  -p `openssl   passwd   -1  -salt  '奥特曼与小怪兽'  123456` wang       还是这个吧

  6. 【ASP.NET Web API教程】2.3 与实体框架一起使用Web API

    原文:[ASP.NET Web API教程]2.3 与实体框架一起使用Web API 2.3 Using Web API with Entity Framework 2.3 与实体框架一起使用Web ...

  7. android端从服务器抓取的几种常见的数据的处理方式

    1.图片 public void look(View v) { String path = et_path.getText().toString(); try { URL url = new URL( ...

  8. Lucene.Net 2.3.1开发介绍 —— 三、索引(七)

    原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(七) 5.IndexWriter 索引这部分最后讲的是IndexWriter.如果说前面提到的都是数据的结构,那么IndexWriter ...

  9. c/c++ 直接使用动态库 dlopen

    c/c++ 直接使用动态库 dlopen 把各个版本编译成动态库,××.so ,提供统一的接口进行调用.这里使用的工具是dlxx系列函数 dlopen  void *dlopen(const char ...

  10. Git权威指南学习笔记(二)Git暂存区

    例如以下图所看到的: 左側为工作区,是我们的工作文件夹. 右側为版本号库,当中: index标记的是暂存区(stage),所处文件夹为.git/index,记录了文件的状态和变更信息. master标 ...