=
注意:
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
=
=
=
相关推荐
接着,我们会编写第一个C#脚本。在Unity中,通常会在"Assets"文件夹下创建一个名为"Scripts"的子文件夹,然后右键新建一个C#脚本,命名为"HelloWorld"。打开这个脚本,你会看到一个基本的C#类,如`public class ...
"unity-hello-world"项目是初学者入门Unity开发的典型起点,它通过创建一个简单的场景来帮助理解Unity的工作流程和基本概念。 在"unity-hello-world"项目中,我们通常会遇到以下几个关键知识点: 1. **Unity界面与...
第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 ...
worksheet.Cells[1, 1].Value = "Hello"; worksheet.Cells[1, 2].Value = "World"; var filePath = Application.dataPath + "/Export.xlsx"; package.SaveAs(new FileInfo(filePath)); } } ``` 除了EPPlus,...
例如,`row.CreateCell(0)`会在当前行的第一个位置创建一个单元格。 4. **写入数据**: 创建单元格后,可以使用`ICell`的`SetCellValue`方法写入文本、数字或其他类型的数据。例如,`cell.SetCellValue("Hello, ...
而 `Shift()` 方法则移除并返回数组的第一个元素: ```javascript var firstElement = arr.Shift(); // 移除并返回数组的第一个元素 ``` `RemoveAt(index)` 函数允许我们根据索引移除特定位置的元素: ```...
// 第一个单元格 cell.SetCellValue("Hello, Excel!"); ``` 6. **写入文件**:使用`FileStream`创建文件流,然后将工作簿写入文件。 ```csharp using (var fileStream = new FileStream("output.xls", File...
1. **Excel.dll**:这可能是一个专门用于处理Excel文件的第三方库,它允许你在Unity中创建、读取和修改Excel文件。通过这个库,你可以直接在代码中操作单元格、行和列,甚至执行复杂的公式和数据处理。 2. **EPPlus...
// 获取第一个工作表 // 访问单元格数据 string cellValue = worksheet.Cells[1, 1].Value.ToString(); // 遍历数据 for (int row = 1; row ; row++) { for (int col = 1; col ; col++) { Console....
`插件`标签则提醒我们,这是一个增强现有功能的第三方工具。 压缩包内的`XmlLayout.unitypackage`文件是Unity3D的标准资源包格式,包含了XmlLayout插件的所有资源和脚本,导入到Unity项目中后,就可以开始使用该...
例如,获取第一个工作表并读取单元格数据: ```csharp ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; string cellValue = worksheet.Cells[1, 1].Value.ToString(); ``` 或者写入数据: ```...
9. **社区支持**:Obi Fluid有一个活跃的开发者社区,提供了丰富的教程、示例和第三方扩展,帮助用户解决遇到的问题,并分享创新的使用方法。 10. **版本更新**:Unity Obi Fluid 3.2版本可能包含了一些新特性、...
例如,要读取一个名为"data.xlsx"的Excel文件的第一张工作表,可以这样编写代码: ```csharp ExcelEngine engine = new ExcelEngine(); IApplication application = engine.Excel; IWorkbook workbook = ...
Unity提供了一个简单的JSON序列化和反序列化的API,即`JsonUtility`。这个类可以将C#对象转换为JSON字符串,反之亦然。但是,`JsonUtility`有一些限制,比如不支持自定义序列化行为,不支持枚举,不支持匿名类型等...
` 获取第一个工作表。 5. 对单元格进行读写操作,如`IRow row = sheet.CreateRow(0);` 创建新行,`ICell cell = row.CreateCell(0);` 创建新单元格,`cell.SetCellValue("Hello, Unity!");` 设置单元格值。 6. ...
本教程将通过"C#入门制作第一个程序Hello World的演示Flash"来引导你步入C#编程的世界。 首先,"Hello, World!"程序在任何编程语言中都是基础,它的主要作用是输出“Hello, World!”字符串,帮助新手了解如何运行一...
2. **Hello Unity**:快速入门,创建第一个Unity项目。 3. **面向组件开发**:理解Unity的组件化设计,如Transform、Mesh、Material等。 4. **物理系统上/下**:通过实际项目进一步巩固物理系统的应用。 5. **实战...
#### 第一章:GUI界面基础 **1.1 GUI.backgroundColor背景颜色** - **定义**:用于设置GUI元素背景颜色。 - **使用场景**:当需要调整按钮、标签等GUI元素背景色时使用。 - **示例代码**: ```csharp GUI....
第一阶段:Unity开发基础 在这一阶段,学习者将首先接触C#语言基础,理解C#的基本数据类型,如整型、浮点型、布尔型等。接下来,会深入学习分支结构(如if-else语句)和循环(如for、while),以及一维和二维数组的...