Skip to content

01 建图与地块 ​

建一张世界版地图,从创建面板拖一块地进场景,再给它加一个皮肤组件换成泥地。

你将做出什么 ​

场景里出现一块像样的田地。 这一课不写代码——先把舞台搭出来。

1. 新建地图 ​

编辑器 → 新建地图 → 「世界模式」分类 → 空白地图(世界版)。

编辑器新建地图界面:世界模式分类与「空白地图(世界版)」模板

建出来之后,场景里能看到三样东西:

看到的东西有什么用
地面玩家不会掉出世界
出生点玩家进场时站在哪儿
工匠蛋站在出生点上的蛋仔形象,标示玩家会从这儿进场

场景里就这三样,但把视线移到资源管理器(层级树),节点远不止三样:

新建好的世界版地图:地面与出生点

节点是什么
World场景本体,会出现在 3D 世界里的东西都挂在它下面
默认相机相机服务,控制你从哪里看这个世界
Lighting光照服务,管环境光和主光源
SoundService声音服务,负责播放音效
ReplicatedStorage服务端与客户端共享的容器,里面的单位会自动同步给客户端,但不创建物理体、也不渲染
ReplicatedFirst优先复制容器,放加载初期就要用的关键资源

除了 World,其余都是引擎自带的服务:地图一建好就有,需要时直接拿来用。它们管的不是摆件——光、声音、视角、存放东西的容器,所以都不占位置、也不显示成模型。

💡 Tips · 什么算"在场景里"

World 是这张地图的世界,也是场景的根——它不能被创建,也不能被删除,所有东西都从它开始长。

更细的:专题「找到场景对象并管理父子关系」 | World

它存放 3D 对象,这些对象会出现在 3D 世界里。它最核心的任务,就是保存"存在于 3D 世界里的对象"——在我们这边就是各种 Unit:地面、地块、方块、作物模型……

挂在 World 下面的东西,才是"看得见、摸得着"的:

  • 会被画出来(玩家能看到)
  • 会和其他物件碰撞、会被推动、会掉下来

反过来,不挂在它下面的东西,在场景里根本看不到,也不会参与碰撞(比如塞进 ReplicatedStorage 的,只是被存着)。

理解这一点有个直接好处:不需要的时候,可以把对象从 World 里移出去——比如换地图时把整张地图移走;暂时用不到的物件,就先放进 ReplicatedStorage 这类容器里存着。

2. 让我们在世界中放下第一款农田 ​

打开创建面板,找到「方块-可变形」:

创建面板:找到「方块-可变形」

把它拖进场景,然后做两件事:

  1. 改名成 地块1——后面所有能力都挂在这块地上,代码要找它,名字要一字不差
  2. 改它的尺寸:
属性改成
尺寸(Size)3, 0.1, 3

一块薄薄的方板——这就是我们的"地"。

拖进场景并调好尺寸后的地块

3. 给它加一个皮肤组件 ​

现在这块板还是默认材质,不太像农田。让我们给它加一个新的皮肤。

① 右键方块 → 添加子组件

选中场景中放置的方块,右键呼出功能菜单,点击 添加子组件。

右键选中方块 → 添加子组件

💡 Tips · 什么是"子组件"

它和原点编辑器里的打组能力类似:都是"给一个物件加上点什么"。差别在于——子组件只对它的父级生效。

子组件分两类:

  • 表现子组件:管"看起来 / 听起来怎么样"(后续课会用到)
  • 功能子组件:管"它有什么能力",比如皮肤、点击、脚本……

属性、枚举、坐标这类基础:专题「对象 · 属性 · 坐标 · 枚举」

② 选中皮肤组件

选中皮肤组件

③ 打开皮肤预设

在皮肤组件的属性里点击皮肤预设。

皮肤组件的属性:皮肤预设

皮肤组件会覆盖它父级的皮肤和材质属性。所以接下来要做的,就是把皮肤对应的预设改成我们想要的泥地皮肤。

④ 选泥地皮肤

在弹出的皮肤选择页面里选泥地。

皮肤选择页面:选泥地

换完之后,这块板看起来就像一块田地了。

运行并核对 ​

换完皮肤后的农田

  1. 试玩一次:站在地面上不掉下去,能看到你的农田。
  2. 层级树里,这块方块挂在 World 下,皮肤组件挂在方块下面。

现象 → 可能原因:

  • 场景里看不到地块 → 它是不是没挂在 World 下(拖进场景时应自动挂上,检查一下层级树)
  • 看着还是默认材质 → 皮肤组件加上了吗、皮肤预设选了泥地吗
  • 板子太厚/太大 → 尺寸是不是 3, 0.1, 3

拓展点 / 自己改一处 ​

把尺寸改成 6, 0.1, 6,看看是不是更像一片田。想再折腾:

  • 换别的皮肤试试(草地、石板……),感受一下"只换皮不动结构"
  • 给地块挪个位置、转个角度,再试试试玩时走过去的感觉
  • 想想:如果这块地以后要长菜,菜该挂在它下面,还是挂在别处?

保存进度 ​

  • 下一步:02 点击与状态——挂互动组件,第一次写代码。
  • 通过标准:地块落位正确(挂在 World 下);皮肤组件生效。
  • 恢复兜底:摆坏了就把这块方块整个删掉重拖一次(这一步很快)。

API:World、WorldUnit。