`
fantaxy025025
  • 浏览: 1313323 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

【转】第一个Unity项目Hello Unity

 
阅读更多

=

注意:

1最后的例子,只需要拖拽到正方体上即可,为什么?因为旋转时,正方体可以看见,而球体等旋转不容易看出来,除非弄成不同的颜色。

2速度调大一些,容易看出来。

int translateSpeed = 30;

int rotateSpeed = 1000;

=

 

from:https://blog.csdn.net/panjunbiao/article/details/9318811

from:http://c.biancheng.net/view/2666.html 

 

在这一篇文章里,参照宣雨松的《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 = 100;

 

//对象的旋转速度

//rotation speed of the opbject

int rotateSpeed = 1000;

 

 

// 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博主「造梦工程师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/panjunbiao/java/article/details/9318811

 

=

=

=

 

分享到:
评论

相关推荐

    微软Unity实现的HelloWorld程序

    接着,我们会编写第一个C#脚本。在Unity中,通常会在"Assets"文件夹下创建一个名为"Scripts"的子文件夹,然后右键新建一个C#脚本,命名为"HelloWorld"。打开这个脚本,你会看到一个基本的C#类,如`public class ...

    unity-hello-world:第一个Unity项目

    "unity-hello-world"项目是初学者入门Unity开发的典型起点,它通过创建一个简单的场景来帮助理解Unity的工作流程和基本概念。 在"unity-hello-world"项目中,我们通常会遇到以下几个关键知识点: 1. **Unity界面与...

    Unity操作Excel需要DLL文件

    worksheet.Cells[1, 1].Value = "Hello"; worksheet.Cells[1, 2].Value = "World"; var filePath = Application.dataPath + "/Export.xlsx"; package.SaveAs(new FileInfo(filePath)); } } ``` 除了EPPlus,...

    Unity 3D脚本编程 使用C#语言开发跨平台游戏

    第1 章 Hello Unity 3D 1 第2 章 Mono 所搭建的脚本核心基础22 第3 章 Unity 3D 脚本语言的类型系统58 第4 章 Unity 3D 中常用的数据结构99 第5 章 在Unity 3D 中使用泛型121 第6 章 在Unity 3D 中使用委托149 第7 ...

    Unity3d动态创建excel并写入数据

    例如,`row.CreateCell(0)`会在当前行的第一个位置创建一个单元格。 4. **写入数据**: 创建单元格后,可以使用`ICell`的`SetCellValue`方法写入文本、数字或其他类型的数据。例如,`cell.SetCellValue("Hello, ...

    Unity3D教程:Array数组类的使用(二)1

    而 `Shift()` 方法则移除并返回数组的第一个元素: ```javascript var firstElement = arr.Shift(); // 移除并返回数组的第一个元素 ``` `RemoveAt(index)` 函数允许我们根据索引移除特定位置的元素: ```...

    Unity读写Excel所需DLL文件

    // 第一个单元格 cell.SetCellValue("Hello, Excel!"); ``` 6. **写入文件**:使用`FileStream`创建文件流,然后将工作簿写入文件。 ```csharp using (var fileStream = new FileStream("output.xls", File...

    Unity——读写Excel文件所需的dll

    1. **Excel.dll**:这可能是一个专门用于处理Excel文件的第三方库,它允许你在Unity中创建、读取和修改Excel文件。通过这个库,你可以直接在代码中操作单元格、行和列,甚至执行复杂的公式和数据处理。 2. **EPPlus...

    unity读写.Excel文件

    // 获取第一个工作表 // 访问单元格数据 string cellValue = worksheet.Cells[1, 1].Value.ToString(); // 遍历数据 for (int row = 1; row ; row++) { for (int col = 1; col ; col++) { Console....

    XmlLayout(unity3d ugui插件)

    `插件`标签则提醒我们,这是一个增强现有功能的第三方工具。 压缩包内的`XmlLayout.unitypackage`文件是Unity3D的标准资源包格式,包含了XmlLayout插件的所有资源和脚本,导入到Unity项目中后,就可以开始使用该...

    Unity的EPPlus,与Excel读写.zip

    例如,获取第一个工作表并读取单元格数据: ```csharp ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; string cellValue = worksheet.Cells[1, 1].Value.ToString(); ``` 或者写入数据: ```...

    unity Obi Fluid3.2.zip

    9. **社区支持**:Obi Fluid有一个活跃的开发者社区,提供了丰富的教程、示例和第三方扩展,帮助用户解决遇到的问题,并分享创新的使用方法。 10. **版本更新**:Unity Obi Fluid 3.2版本可能包含了一些新特性、...

    unity操作excel的eplus插件,.net等级必须为4

    例如,要读取一个名为"data.xlsx"的Excel文件的第一张工作表,可以这样编写代码: ```csharp ExcelEngine engine = new ExcelEngine(); IApplication application = engine.Excel; IWorkbook workbook = ...

    Unity Json解析

    Unity提供了一个简单的JSON序列化和反序列化的API,即`JsonUtility`。这个类可以将C#对象转换为JSON字符串,反之亦然。但是,`JsonUtility`有一些限制,比如不支持自定义序列化行为,不支持枚举,不支持匿名类型等...

    Unity读写excel需要的dll文件,建议Unity2017以上

    ` 获取第一个工作表。 5. 对单元格进行读写操作,如`IRow row = sheet.CreateRow(0);` 创建新行,`ICell cell = row.CreateCell(0);` 创建新单元格,`cell.SetCellValue("Hello, Unity!");` 设置单元格值。 6. ...

    C#入门制作第一个程序hello world的演示flash

    本教程将通过"C#入门制作第一个程序Hello World的演示Flash"来引导你步入C#编程的世界。 首先,"Hello, World!"程序在任何编程语言中都是基础,它的主要作用是输出“Hello, World!”字符串,帮助新手了解如何运行一...

    Unity开发学习线路.pdf

    2. **Hello Unity**:快速入门,创建第一个Unity项目。 3. **面向组件开发**:理解Unity的组件化设计,如Transform、Mesh、Material等。 4. **物理系统上/下**:通过实际项目进一步巩固物理系统的应用。 5. **实战...

    Unity3D GUI 教程

    #### 第一章:GUI界面基础 **1.1 GUI.backgroundColor背景颜色** - **定义**:用于设置GUI元素背景颜色。 - **使用场景**:当需要调整按钮、标签等GUI元素背景色时使用。 - **示例代码**: ```csharp GUI....

    Unity开发学习线路.docx

    第一阶段:Unity开发基础 在这一阶段,学习者将首先接触C#语言基础,理解C#的基本数据类型,如整型、浮点型、布尔型等。接下来,会深入学习分支结构(如if-else语句)和循环(如for、while),以及一维和二维数组的...

Global site tag (gtag.js) - Google Analytics