Unity基础:创建你的第一个游戏物体------Cube、Sphere与基本3D物体

大家好,欢迎回到Unity教程系列。前面几篇文章我们打好了理论基础------了解了GameObject与Component的架构、掌握了编辑器六大视图的操作、熟悉了Transform组件。今天这篇文章,我们要把这些理论付诸实践,真正动手在Unity中创建和操作游戏物体。
这篇文章的氛围和前几篇不同------理论少一些,实操多一些。我会带着你一步步创建3D物体、排布场景、添加材质、制作简单的小作品。请打开Unity编辑器,跟着我一起操作。动手做一遍,比看十遍文章更有效。
一、认识Unity内置的3D基本体
1.1 什么是基本体(Primitive)
💡 基本体(Primitive)是Unity内置的最简单的3D几何形状。它们不需要从外部导入模型,直接在Unity编辑器中就能创建,非常适合快速搭建场景原型(Prototype)和学习基本操作。
Unity提供了六种3D基本体,每种都有预设的网格数据:
1.2 Cube(立方体)
Cube是最常用的基本体。默认创建出来的Cube边长为1单位(1米),包含8个顶点和12个三角形(6个面,每个面2个三角形)。
典型用途:
- 搭建场景原型(墙壁、地板、平台)
- 制作简单的方块形道具
- 作为碰撞检测的临时替身
创建方式:GameObject菜单 → 3D Object → Cube,或在Hierarchy中右键 → 3D Object → Cube。
1.3 Sphere(球体)
Sphere默认半径为0.5单位(直径为1单位)。Unity的球体由经纬线网格组成,默认面数较多,表面看起来比较光滑。
典型用途:
- 制作球、弹珠、炸弹等球形物体
- 作为角色的简化碰撞体
- 制作行星、水晶球等
1.4 Capsule(胶囊体)
Capsule是一个圆柱体两端各连接半个球体的形状。默认高度为2单位,半径为0.5单位。胶囊体的形状天然适合角色的碰撞检测------它能很好地贴合人形角色的身体轮廓,而且没有尖锐的边角,在斜坡和台阶上的移动表现比Box Collider更平滑。
💡 实际上,Unity标准的第一人称和第三人称角色控制器默认都使用Capsule Collider。
1.5 Cylinder(圆柱体)
Cylinder默认高度为2单位,半径为0.5单位。它是一个两端为平面的柱体。适合制作柱子、树干、桶等。
1.6 Plane(平面)
Plane是一个10×10单位的大平面,由大量的网格细分组成(默认10×10个顶点段)。⚠️ 注意Plane不是Quad------Plane有非常多的三角形(200个),主要适合做地形和地面,不适合做UI背景(用Quad更合适)。
1.7 Quad(四边形)
Quad是最简单的四边形------只有4个顶点和2个三角形。它是一个1×1单位的小平面,朝向Z轴正方向(也就是"站立"的)。Quad非常适合用做2D精灵的载体或简单的背景平面。
📝 Quad和Plane的区别很容易搞混。简单记:Plane是"地面"(水平放置、面朝上、面数多),Quad是"画板"(竖直放置、面朝前、只有2个面)。
二、动手创建你的第一个场景
2.1 创建地面
让我们从一个最简单的场景开始------一个带有地面、墙壁、和几个物体的简单场景。
① 在Hierarchy中右键 → 3D Object → Plane,创建一个平面。
② 在Inspector中将其重命名为"Ground"(选中后按F2或直接点击名称编辑)。
③ 将Position设为 (0, 0, 0),这是场景的原点位置。
④ 将Scale设为 (1, 1, 1),保持默认大小。如果需要更大的地面,可以把Scale改为 (2, 1, 2)。
2.2 创建墙壁
我们来搭建一个简单的墙体结构:
① 创建第一个Cube:右键 → 3D Object → Cube,命名为"Wall_North"。
② 设置Wall_North的Position为 (0, 2, -5),Scale为 (10, 4, 0.5)。
③ 选中Wall_North,按Ctrl+D复制,命名为"Wall_South"。
④ 设置Wall_South的Position为 (0, 2, 5)。
⑤ 创建Wall_East:Position为 (5, 2, 0),Scale为 (0.5, 4, 10)。
⑥ 创建Wall_West:Position为 (-5, 2, 0),Scale为 (0.5, 4, 10)。
现在你已经有了四面墙壁,围成了一个10×10的房间。
2.3 在场景中放置物体
① 创建一个Sphere:右键 → 3D Object → Sphere,命名为"Ball"。
② 设置Ball的Position为 (0, 1, 0),让它浮在地面上方。
③ 创建一个Cylinder,命名为"Pillar"。
④ 设置Pillar的Position为 (3, 2, 3),Scale为 (1, 2, 1)。
⑤ 创建两个Cube放在角落,作为"箱子"。
2.4 Scene视图导航练习
在搭建场景的过程中,不断练习上一篇学到的Scene视图导航:
- 按F键聚焦到某个选中的物体
- 右键拖动旋转视角,从各个角度观察你的建筑
- 滚轮缩放查看细节
- 中键拖动平移视角
- 右键+WASD进行飞行漫游
✅ 到这个步骤,你应该已经能在Scene视图中看到一个简单的小房间结构了。
三、添加颜色------Material材质入门
3.1 为什么需要材质
你可能注意到了------所有创建的物体都是白色的(默认材质)。如果想让它们有不同的颜色,就需要用到材质(Material)。这里先做一个简单的材质操作体验,后续有专门的文章深入讲解。
3.2 创建并应用材质
① 在Project窗口中,右键 → Create → Material,创建一个新材质。
② 命名为"Mat_Red"。
③ 在Inspector中,点击Albedo(基色)旁边的白色矩形。
④ 在弹出的颜色选择器中选择红色,关闭颜色选择器。
⑤ 将材质从Project窗口拖到Scene视图中的某个物体上------物体会变成红色。
⑥ 重复以上步骤创建Mat_Blue(蓝色)、Mat_Green(绿色)等不同颜色的材质。
💡 你可以尝试修改材质的其他属性:
- Metallic(金属度):0是非金属,1是完全金属
- Smoothness(光滑度):0是粗糙表面,1是完全镜面反射
- 调整这两个值能明显改变物体的视觉质感
3.3 给场景上色
给场景中的物体赋予不同的颜色:
- Ground(地面):深灰色材质
- 四面墙壁:分别赋予浅灰或不同颜色
- Ball(球体):红色,Metallic设为0.5,看起来像金属球
- Pillar(柱子):深棕色
现在你的场景应该有模有样了。
四、物体的基本操作
4.1 移动物体
使用Translate工具(W键),在Scene视图中拖拽物体:
- 拖拽红色箭头 → 沿X轴移动
- 拖拽绿色箭头 → 沿Y轴移动(上下)
- 拖拽蓝色箭头 → 沿Z轴移动
- 拖拽两个箭头之间的方片 → 在平面上自由移动
可以在Inspector中直接输入Position的精确数值来进行精确定位。
4.2 旋转物体
使用Rotate工具(E键):
- 拖拽红色圆环 → 绕X轴旋转
- 拖拽绿色圆环 → 绕Y轴旋转
- 拖拽蓝色圆环 → 绕Z轴旋转
- 按住Ctrl拖动 → 按15度增量旋转
4.3 缩放物体
使用Scale工具(R键):
- 拖拽红色方块 → 沿X轴缩放
- 拖拽绿色方块 → 沿Y轴缩放
- 拖拽蓝色方块 → 沿Z轴缩放
- 拖拽中心灰色方块 → 等比例缩放
4.4 物体的选择、复制与删除
| 操作 | 方法 |
|---|---|
| 单选 | 点击物体 |
| 多选 | Ctrl+点击 或 框选拖拽 |
| 复制 | Ctrl+D(Duplicate) |
| 删除 | Delete键 或 右键→Delete |
| 重命名 | F2键 或 点击已选中物体的名称 |
4.5 顶点吸附与网格吸附
💡 两个提高场景搭建精度的实用技巧:
顶点吸附(Vertex Snapping):在移动工具(W键)激活的状态下,按住V键不放,将鼠标移到物体的某个顶点上(出现白色方块),然后拖动到另一个物体的顶点附近,两个顶点会自动对齐。
这个功能在需要精确拼接墙面、地板等模块化场景时非常有用。
网格吸附(Grid Snapping):
- 按住Ctrl拖动 → 按世界网格的单位间隔移动
- 在
Edit > Grid and Snap Settings中设置网格大小 - 默认网格大小为1单位
五、用代码控制物体
5.1 创建一个控制脚本
现在让我们写点代码,让场景中的物体动起来。在Project窗口中创建Scripts文件夹,然后在其中创建C#脚本:
① 右键 → Create → C# Script,命名为"Rotator"。
② 双击打开脚本,在IDE中编写以下代码:
csharp
using UnityEngine;
public class Rotator : MonoBehaviour
{
[SerializeField] private float speed = 30f;
[SerializeField] private Vector3 rotationAxis = Vector3.up;
void Update()
{
// 每帧绕指定轴旋转
transform.Rotate(rotationAxis * speed * Time.deltaTime);
}
}
③ 将Rotator脚本从Project窗口拖到场景中的Sphere上。
④ 点击Play按钮(▶),观察球体旋转。
⑤ 在Inspector中修改speed值(比如改为100),观察旋转速度的变化。
⑥ 修改rotationAxis为 (1, 1, 0),观察旋转轴的变化。
5.2 创建一个移动脚本
创建第二个脚本"Oscillator":
csharp
using UnityEngine;
public class Oscillator : MonoBehaviour
{
[SerializeField] private float amplitude = 2f;
[SerializeField] private float frequency = 1f;
private Vector3 startPosition;
void Start()
{
startPosition = transform.position;
}
void Update()
{
// 使用正弦波做上下往复运动
float newY = startPosition.y + Mathf.Sin(Time.time * frequency) * amplitude;
transform.position = new Vector3(startPosition.x, newY, startPosition.z);
}
}
将Oscillator脚本挂载到Ball或其他物体上,运行游戏观察效果。
5.3 创建一个完整的控制器
让我们创建一个可以用键盘控制的物体:
csharp
using UnityEngine;
public class SimpleController : MonoBehaviour
{
[SerializeField] private float moveSpeed = 5f;
[SerializeField] private float turnSpeed = 100f;
void Update()
{
// 前后左右移动
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(horizontal, 0, vertical) * moveSpeed * Time.deltaTime;
transform.Translate(movement, Space.World);
// 旋转
if (Input.GetKey(KeyCode.Q))
{
transform.Rotate(Vector3.down * turnSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.E))
{
transform.Rotate(Vector3.up * turnSpeed * Time.deltaTime);
}
}
}
六、组织场景------使用空GameObject
6.1 为什么需要组织
当场景中的物体越来越多,Hierarchy窗口会变得杂乱。你可以用空GameObject来组织场景结构:
① 创建空GameObject(右键 → Create Empty),命名为"--- WALLS ---"。
② 将四面墙壁拖到 --- WALLS --- 下成为子物体。
③ 创建另一个空GameObject命名为"--- PROPS ---"。
④ 将球体、圆柱体等道具拖到 --- PROPS --- 下。
现在Hierarchy的结构变得清晰了:
SampleScene
├── Main Camera
├── Directional Light
├── Ground
├── --- WALLS ---
│ ├── Wall_North
│ ├── Wall_South
│ ├── Wall_East
│ └── Wall_West
├── --- PROPS ---
│ ├── Ball
│ ├── Pillar
│ └── Box_01
└── --- SCRIPTS ---(可选,挂在管理器脚本)
6.2 组织节点的好处
- Hierarchy干净整洁,快速定位物体
- 通过移动组织节点(如--- WALLS ---),可以批量移动整个组
- 折叠不需要操作的分组,减少视觉干扰
七、完整场景挑战
7.1 搭建一个小型城堡
应用本文所学的全部知识,试着搭建一个小型城堡场景:
① 用Plane做地面(Scale加大)
② 用多个Cube搭建城墙和塔楼
③ 用Cylinder做塔楼的柱子
④ 用Sphere做塔楼的穹顶
⑤ 用不同的颜色材质给各部分上色
⑥ 用空GameObject组织各个建筑结构
⑦ 创建几个脚本让某些部分动起来(旋转的旗帜、上下浮动的魔法球等)
7.2 检查清单
完成挑战后,对照以下列表检查:
- 场景中至少有10个不同的GameObject
- 使用了至少3种不同的基本体
- 创建并应用了至少5种不同的材质颜色
- Hierarchy中有清晰的分组结构
- 至少有一个物体挂载了自定义脚本
- 点击Play后场景有动态效果
八、本篇总结
✅ 本文核心知识点回顾:
- Unity提供六种3D基本体:Cube、Sphere、Capsule、Cylinder、Plane、Quad
- 使用Transform工具(W/E/R)操作物体的位置、旋转和缩放
- Material材质决定物体的外观颜色和质感
- Scrip脚本挂载到GameObject上赋予其动态行为
- 空GameObject是组织场景结构的重要工具
- Ctrl+D复制、Delete删除、F2重命名是最常用的编辑操作
- 顶点吸附(V键)和网格吸附(Ctrl)提高场景搭建精度
📝 从下一篇文章开始,我们将深入学习材质与纹理系统------让游戏中的物体不仅有不同的颜色,还能有逼真的纹理贴图和表面细节。
动手任务:完成本文第七节的"小型城堡"挑战,搭建你自己的场景作品!
关于作者:拥有多年Unity开发经验的游戏开发者,专注Unity系统化教学与最佳实践分享。欢迎在评论区交流讨论!