在第二部分中,我们将介绍如何通过iFVN中的脚本更高级地使用字符串变量及其用法。 通过脚本高级使用字符串变量 注意: 此知识仅基于我在iFVN中的个人经验以及网络上关于JS的文档。熟练的程序员肯定会觉得这些信息非常基础,甚至可能不太准确。 在我们的游戏中,出于不同原因,需要使用许多变量(用于存储角色信息列表、小游戏数据,甚至物品栏等)。很多时候,这些信息并不那么重要,而且可能很少被使用。 为每个信息元素单独使用数字或字符串变量可能会造成混淆,并且由于数量众多,往往难以管理。在iFVN中,一种优化变量并维持其特定顺序的方法是使用数组。我们将数组定义为JavaScript中的一种特殊变量类型,它可以在单个变量中存储多个值或数据列表,在iFVN中则是通过字符串变量来实现。之后,我们可以访问存储在该字符串变量中的数据,并且能够修改其中的每个元素。 数组只能通过iFVN中的脚本以及IFAction来使用,这需要一些基于JavaScript的编程知识,我们将在下文进行介绍。这种“特殊类型”的数组变量可以列出数值、字符串值或两者皆有,这与我们在第一部分中介绍的常规变量不同,但需要通过特殊的处理过程来实现。示例: 字符串值数组:[约翰, 亚当, 艾玛, 彼得] 数值数组:[45,13,5,20] 混合数组:[约翰, 45, 狗, 15] 在iFVN字符串变量中使用数组 要求: 要创建数组变量,在iFVN中必须始终选择常规字符串变量,因为只有它允许我们写入文本字符串并进行存储。 信息列表中的每个值或元素必须用特殊字符分隔,建议使用逗号“,”进行分隔。 示例:(约翰, 亚当, 艾玛, 彼得) 或 (45,13,5,20)。 之后我们可以通过脚本访问这些存储的元素。重要提示: 字符串变量,顾名思义,仅存储文本,不会自动区分内容中的字母和数字(数字会被视为字符而非数值)。 在数组变量中,当我们写入数字并希望对其执行算术运算时,必须先将它们转换为数值,之后才能进行这些运算。 在iFVN中处理数组变量的机制如下: 1. 在字符串变量中创建或定义元素 2. 将字符串变量转换并分割为数组的各个元素 3. 使用JavaScript单独修改、添加或删除数组元素 4. 再次将数组变量合并并转换为字符串以存储信息创建数组变量 数组变量可通过常规字符串变量创建,可从一开始就写入所需元素,例如:John,dog,flowers 也可稍后在章节或用户界面中通过脚本声明,例如:RV.GameData.value[4] = "John,dog,flowers" (请参阅iFVN中通过脚本使用变量(第一部分)) 注意:通过脚本在字符串变量中定义值时,使用引号非常重要。

此外,还需要创建和使用临时数组(不会存储在变量中),正如我们接下来将看到的,它们将在脚本中为我们提供帮助。 修改数组变量 要修改包含数组的字符串变量,创建后必须将其拆分为各个部分,以便处理并访问每个单独的值,无论是字符串值还是数字。 修改包含字符串值的数组变量 我们使用一个任意名称的临时数组变量,在本例中为【TempVar】,此临时变量将帮助我们拆分字符串变量,并使用以下脚本将其转换为JavaScript数组变量: 【TempVar】= RV.GameData.value [4] .split (",") 注意:从脚本中可以看到,特殊字符是用引号指定的,这里的特殊字符是“,”。 通过这种方式,每个元素都能被JavaScript单独识别,现在我们得到了一个可以修改的临时数组: TempVar = ["John", "dog", "flowers"] 每个单独的元素表示如下: TempVar [0] = "John" TempVar [1] = "dog" TempVar [2] = "flowers" 要修改内容,我们需要指定要修改的元素并替换其值。 示例: TempVar [0] = "Peter" TempVar [1] = "cat" 最后,我们需要将临时数组变量的元素连接起来,并使用以下脚本将其存储到字符串变量中: RV.GameData.value [5] = TempVar以下是我们将要编写的完整脚本: TempVar = RV.GameData.value[4].split(",") TempVar[0] = "彼得" TempVar[1] = "猫" RV.GameData.value[4] = TempVar.join() 现在我们变量的值为: RV.GameData.value[5] = "彼得,猫,花朵"

修改包含数值的数组变量 如果数组包含数值,操作方式类似,但需要通过对脚本进行一些修改来表明这是数字而非普通字符。 创建或定义字符串变量: 示例: RV.GameData.value[5] = "20,30,5,15" 使用临时数组变量进行分割: TempVar = RV.GameData.value[5].split(",") 结果如下: TempVar = [20,30,5,15] 各元素分别为: TempVar[0] = 20 TempVar[1] = 30 TempVar[2] = 5 TempVar[3] = 15 修改最后两个元素: 示例: TempVar[2] = 10 TempVar[3] = 40 合并数组: RV.GameData.value[5] = TempVar.join() 完整脚本如下: TempVar = RV.GameData.value[5].分割(",") 临时变量[2] = 10 临时变量[3] = 40 游戏数据值[5] = 临时变量合并 现在我们的变量值为: 游戏数据值[5] = "20,30,10,40"

对数组元素执行基本算术运算 要让数组元素在JavaScript中被识别为数值并进行运算,需要在每个元素开头添加“+”号。 以下是相应的脚本: TempVar = RV.GameData.value[5].split(",") TempVar[0] = +TempVar[0] +20 TempVar[1] = +TempVar[1] -10 TempVar[2] = +TempVar[2] *5 TempVar[3] = +TempVar[3] /3 RV.GameData.value[5] = TempVar.join() 现在变量的值为: RV.GameData.value[5] = "40,20,25,5"

向数组变量添加元素 要在数组开头添加新元素,我们使用unshift方法:TempVar.unshift("blue") 要在数组末尾添加新元素,使用push方法:TempVar.push("cat") 要在数组的特定位置添加新元素,使用splice方法:TempVar.splice(1,0,"music") splice()方法用于向数组添加或删除元素,在这个例子中,"music"元素将被添加到位置1。 最终脚本如下: TempVar = RV.GameData.value[4].split(",") TempVar.unshift("blue") TempVar.push("cat") RV.GameData.value[4] = TempVar.join() 现在我们变量的值将是: RV.GameData.value[5] = "blue, music, John, dog, flowers, cat"

从数组变量中移除元素 要移除数组开头的元素,我们使用shift方法:TempVar.shift() 要移除数组末尾的元素,使用pop方法:TempVar.pop() 要移除数组中特定位置的一个或多个元素,使用splice方法:TempVar.splice (2,1) 我们再次使用splice()方法,这次是为了从数组中移除元素,在这个例子中,将从位置2开始移除1个元素。 最终脚本如下: TempVar = RV.GameData.value [4] .split (",") TempVar.splice (2,1) TempVar.shift () TempVar.pop () RV.GameData.value [4] = TempVar.join () 由于3个元素被删除,变量的值将为空。 RV.GameData.value [5] = ""

字符串变量中数组的这种处理方式,乍一看可能有些复杂,但对于更高级地使用引擎、在章节中或通过自定义用户界面实现更复杂的交互,以及减少常规变量数量而言,是一个非常实用的选项。不过,我们也可以利用内置商店提供的强大模组来完成一些任务,无需通过脚本把事情变得如此复杂。




换一换 
















