unity3d 模拟drop drag

2015年01月21日 09:48 0 点赞 0 评论 更新于 2025-11-21 14:40

今天主要来讲一下 Unity3D 模拟 Drop Drag 的主要区别。在游戏中,储物箱等 GUI 是常见的元素。通常,GUI 的一侧会展示物品图标,另一侧则是角色,玩家可以拖动这些图标并放置到角色身上,从而为角色装配装备。接下来,我们将首先实现较为简单的 Drag&Drop 功能。

制作三维场景

1. 创建 Advanced3D UI

使用“Create a new UI”对话框创建一个 Advanced3D UI。

2. 调整 Panel 和 Camera

把 Panel 拖出,使其脱离 Anchor 父物体,然后将其重命名为 3D。接着,把 Camera 作为子物体拖动到 Panel 下面,并对 Camera 对象进行重置。最后,删除 UI Root(3D)对象和 Anchor 对象。删除 UIRoot 是因为该对象仅用于调整 GUI 大小,而我们这个层级只需显示一个立方体和一个背景。

3. 创建背景

选择 Camera,使用“WidgetTool”对话框在 Camera 下创建一个 SlicedSprite 对象,调整其大小和位置,将其作为背景。

4. 创建 stage 对象

创建一个空的游戏对象,命名为 stage。该对象的作用是让其子物体能够自动旋转。将该游戏对象放置到 3D 对象下,使其成为子物体,并进行重置。

5. 创建 Cube 并赋予材质

在 stage 下创建一个 Cube,并为该 Cube 赋予一个 brick 材质。在 Project 窗口中,打开“NGUI -> Example -> brick”,然后调整它的大小。

6. 调整 stage 对象位置

选择 stage 对象,调整其位置。

7. 添加 spin 组件

再次选择 stage 对象,为它添加一个 spin 组件(“Component -> NUI -> Example -> spin”)。这个组件可以使自身旋转,设置其参数后,点击播放,就能看到立方体开始旋转。需要注意的是,子物体会继承父物体的所有变换(平移、缩放和旋转)。

8. 添加 SpinWithMouse 组件

选择 cube 对象,为其添加一个 SpinWithMouse 组件(“Component -> NGUI -> Example -> Spin With Mouse”),该组件可使物体随着鼠标的拖动而转动。

9. 添加 Direction Light

在 3D 对象下创建一个 Direction Light,照亮场景,让场景更加美观。

制作 GUI 部分

1. 创建 Simple 2D

使用“Create a new UI”对话框,创建一个 Simple 2D。

2. 重命名 Anchor 对象

把 Anchor 对象改名为 Anchor Bottom,并设置其 side 参数为 Bottom。

3. 重命名 Panel 并创建背景

选择 Panel,将其改名为 Window Panel。使用“WidgetTool”创建一个 SlicedSprite,设置参数,将该元件改名为 background,并调整其大小和位置。

4. 设置 2DGUI layer

当前视口中间有一个正方形,它是上面 3D 对象层级的背景。选择 UIRoot(2D)对象及其子对象,为其添加一个 2DGUI layer(如何添加 Layer 和 Layer 的作用在 Unity 文档中有详细描述,这里不再赘述)。选择 UIRoot(2D)中的 Camera,设置其 Culling Mask 为 2DGUI,即该摄像机只显示这个 Layer 中的对象,其他 Layer 的对象不会在这个摄像机中显示。

5. 创建 ListPanel

选择 WindowPanel,为其添加一个新的 Panel(“NGUI -> create a Panel”),并重新命名为 ListPanel。

6. 创建 DragDropContainer

为 ListPanel 创建一个空的游戏对象,命名为 DragDropContainer,进行重置,并为它添加一个 Collider(“NGUI -> Attach a collider”)。