如何检查数组中是否存在相同的键?
How do I check if the same key exists in an Array?
我正在尝试在 IOS 中制作一款 RPG 游戏,在 Baldurs Gate 中使用类似的对话系统。我在 plist 文件中创建了两个数组。像这样:
如您所见,我有两个数组:PlayerMessage;玩家可以触摸和 NPCMessages 的多个选择列表(它将是);触摸 PlayerMessage 时显示的文本
我正处于可以触摸 NPC 的阶段,它将显示一个黑框(NPCMessageer 节点),其中包含数组中的文本(通过 plist 文件的 PlayerMessage)。
但是,我不知道如何连接 PlayerMessage 中的项目 0 和 NPC 消息,如果它们存在,请更改消息:SKLabelNode!文本到 NPCMessage 中的一个。有谁知道如何比较另一个数组中是否存在另一个项目?
这是我使用过的代码:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
for touch in (touches) {
NPC.name = "NPC"
let Location = touch.location(in: self)
var CorrectedLocation = CGPoint()
CorrectedLocation.x = Location.x - LocalCamera.position.x
CorrectedLocation.y = Location.y - LocalCamera.position.y
let node = self.atPoint(CorrectedLocation)
var Message: SKLabelNode!
Message = SKLabelNode(fontNamed: "Trebuchet MS")
if (node.name == "NPC") {
let NPCMessageer = SKSpriteNode (color: UIColor.black, size: CGSize(width:1000, height:1000))
NPCMessageer.zPosition = 99
NPCMessageer.position = CGPoint(x:-500, y:-200)
Message.fontSize = 50
Message.color = UIColor.white; Message.position = CGPoint(x:-500, y:-100)
Message.zPosition = 100
addChild(NPCMessageer)
self.addChild(Message)
for PlayerMessage in NPC.PlayerMessage {
Message.text = PlayerMessage as?String}
let label = self.atPoint(CorrectedLocation)
if label.name == "Message"
{
if NPC.PlayerMessage == NPC.NPCMessage
{
Message.text = NPC.NPCMessage as?String
}
如果我没理解错的话,您想从一个数组中找到另一个数组中的给定元素。
然后您可以使用 firstIdex(of:)
,如果存在元素,则使用返回的索引来设置 Message 对象
let item = PlayerMessage[0] //assuming this is what you want to find
if let index = NPCMessage.firstIndex(of: item) {
let Message.text = NPCMessage[index]
}
我正在尝试在 IOS 中制作一款 RPG 游戏,在 Baldurs Gate 中使用类似的对话系统。我在 plist 文件中创建了两个数组。像这样:
如您所见,我有两个数组:PlayerMessage;玩家可以触摸和 NPCMessages 的多个选择列表(它将是);触摸 PlayerMessage 时显示的文本
我正处于可以触摸 NPC 的阶段,它将显示一个黑框(NPCMessageer 节点),其中包含数组中的文本(通过 plist 文件的 PlayerMessage)。
但是,我不知道如何连接 PlayerMessage 中的项目 0 和 NPC 消息,如果它们存在,请更改消息:SKLabelNode!文本到 NPCMessage 中的一个。有谁知道如何比较另一个数组中是否存在另一个项目?
这是我使用过的代码:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
for touch in (touches) {
NPC.name = "NPC"
let Location = touch.location(in: self)
var CorrectedLocation = CGPoint()
CorrectedLocation.x = Location.x - LocalCamera.position.x
CorrectedLocation.y = Location.y - LocalCamera.position.y
let node = self.atPoint(CorrectedLocation)
var Message: SKLabelNode!
Message = SKLabelNode(fontNamed: "Trebuchet MS")
if (node.name == "NPC") {
let NPCMessageer = SKSpriteNode (color: UIColor.black, size: CGSize(width:1000, height:1000))
NPCMessageer.zPosition = 99
NPCMessageer.position = CGPoint(x:-500, y:-200)
Message.fontSize = 50
Message.color = UIColor.white; Message.position = CGPoint(x:-500, y:-100)
Message.zPosition = 100
addChild(NPCMessageer)
self.addChild(Message)
for PlayerMessage in NPC.PlayerMessage {
Message.text = PlayerMessage as?String}
let label = self.atPoint(CorrectedLocation)
if label.name == "Message"
{
if NPC.PlayerMessage == NPC.NPCMessage
{
Message.text = NPC.NPCMessage as?String
}
如果我没理解错的话,您想从一个数组中找到另一个数组中的给定元素。
然后您可以使用 firstIdex(of:)
,如果存在元素,则使用返回的索引来设置 Message 对象
let item = PlayerMessage[0] //assuming this is what you want to find
if let index = NPCMessage.firstIndex(of: item) {
let Message.text = NPCMessage[index]
}