3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 7014|回复: 2
打印 上一主题 下一主题

[分享] Roblox官方教程精选5-NPC 对话框

[复制链接]

94

主题

126

帖子

409

积分

管理员

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

贡献度
39
金元
1925
积分
409
精华
6
注册时间
2016-9-12

自由之章

QQ
跳转到指定楼层
主题
发表于 2019-11-15 17:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Dialog 对象能让你使用内置界面来创建你能够与之交谈的 NPC 角色。该界面简单易用,甚至无需进行脚本编写。尽管如此,你也能通过 Dialog.DialogChoiceSelected 事件来添加额外的功能。
你可以用对话来实现以下效果:
*创建能够给予你奖励或任务的 NPC 角色;
*创建机器人助手;
*制作会说话的敌人;
*真的能够创建任何东西,尽情发挥你的想象吧!
基本概述
对话的使用实际上非常简单,各位没有完成 Lua 语言学习的人,不必进行脚本编写。对话的构成如下图所示:

Dialog 对象会显示初始提示,随后会从 DialogChoice 对象向用户提供回答选择;而 DialogChoice 接着会通过自身内所包含的 DialogChoice 对象向用户提供回答选择。
创建基本的对话
制作对话气泡
首先,打开 Roblox Studio 并创建一个新场景。在资源管理器(View(视图)-> Explorer(资源管理器))当中,选择你想要在其上方显示对话气泡的部件。单击“Insert(插入)”,选择“Basic Objects(基本对象)”,然后在出现的窗口中选择“Dialog(对话)”。
你的第一个对话对象就此创建完成!在你使用角色运行游戏(联机或单人测试模式)前,你是无法看到对话气泡出现的。
在属性窗口(View(视图)-> Properties(属性))当中,你将会看到 Dialog.InitialPrompt 属性。将该属性更改为当你单击对话气泡时该部件所要说的话。

好啦!你已经完成了第一个当你单击其图标时就会说话的部件!
添加选择
你已经做好了对话气泡。效果不错,不过你还是没法跟它交谈,对吧?
选择原始的 Dialog 对象并单击“Insert(插入)”,然后单击“Basic Objects(基本部件)”,接着从窗口当中选择 DialogChoice。

在你已经打开的属性窗口中,你将会看到一条为 DialogChoice.UserDialog 的属性。这是用户将会得到的选择,而非该属性或任何其他属性的名称。DialogChoice.ResponseDialog 属性是用户选择该选项后,部件将会说的话,请将其更改为你想要让其说的话。

你向原始的 Dialog 对象添加多少个 DialogChoice 对象,就能向用户提供多少种选择。

添加更多选择
现在,我们的 Dialog 能向用户提供多种选择,每种选择都能让部件给出一种回答。此外,我们还能在这些选择中添加更多选择,从而用该部件创建一组更加丰富的对话。
要实现这一目的,你只需在完成上一步时不要将 DialogChoice 对象插入原始 Dialog 对象,而是将其插入已有的 DialogChoice 对象当中。

更多属性和自定义内容
你可以利用其他属性进一步自定义自己的 Dialog。请通过属性窗口更改这些属性。
注意:这些都只是会在游戏中呈现明显视觉效果的属性。
Dialog.ConversationDistance:请将其设为你能够与部件对话的最大距离。如果你在该距离范围内开始对话,然后走出该范围,对话就会终止。
Dialog.Purpose:这些是指显示在部件上方供你单击的各种不同图标。任务用 ! 表示,帮助用“?”表示,而商店则用“$”表示。
Dialog.Tone:这是指对话(即对话气泡)和选择 GUI 的颜色。友好用绿色表示,中立用蓝色表示,敌对则用红色表示。
示例
以下是一个使用当中的 Dialog 示例。

脚本编写
如果你已经完成了 Roblox Lua 的学习,你还可以向自己的 NPC 部件添加更多的功能。脚本编写事件 DialogChoiceSelected 包含两种参数,即玩家对象和玩家所作选择的对象。该事件不会返回选择的名称。每当玩家作出一种选择时,都会触发该事件。
        workspace.Dialog.DialogChoiceSelected:connect(function(player,choice)
        print(player.Name,choice.Name)
end)
该事件会打印玩家的名称,以及每次玩家作出选择时所作选择的名称。你不能用 Dialog 方法将其本地化为具体的选择。如果你希望在玩家作出特定选择时触发事件,就需要赋予其一个唯一的 Name 属性,并将其与 if 语句进行比较。
workspace.Dialog.DialogChoiceSelected:connect(function(player,choice)
        if choice.Name == "No" then
                player.Character.Humanoid.Health = 0
        elseif choice.Name == "Yes" then
                player.Character.Humanoid.Health = 1000
        end
end)
你也可以在特定玩家作出特定选择时触发事件。
示例:
workspace.Dialog.DialogChoiceSelected:connect(function(player,choice)
        if choice.Name == "isplayer" and player.Name == "pighead10" then
                player.Character.Humanoid.Health = 10000
        end
end)
借助该事件,你可以给予角色任务、奖励、商店物品等!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-8 21:58 , Processed in 0.028853 second(s), 17 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表