加入我们,或者,欢迎回来。 您需要 登录  才可以下载或查看,没有帐号?注册会员  
 
x 
 
 本帖最后由 RaidenInfinity 于 2017-3-20 13:52 编辑  本帖记载常见的RGSS3脚本错误,与一般排除的方法。
不过,请各位看官注意。这是个教程,不是帮助文档。本教程只概括RGSS3常出现的错误讯息,而且还是新手常遇到的。因此,在作出评论之前,请先了解这一点。RGSS脚本教程 RPGMaker VX Ace F1帮助文档  A. 讯息解读 B. 错误讯息 1. Syntax Error  句法 错误  2. Argument Error  参数 错误  参数数量 与所需要的不相符 就会出现这种错误。3. Name Error  名称 错误  找不到局部变量,方法 或者常量 的时候出现的。出现这个错误,八成就是代表…你眼睛出了点问题,有变量或方法名拼错了。#范例1:局部变量名字拼错 
 
actor = "Eric" 
p  actr #出错!actor错拼成actr! 
 
#范例2:方法名字拼错 
 
def  abcde
  p  "666" 
end 
 
abdef #出错!abcde错拼成abdef! 
 
#范例3:常量名字拼错(总之大字母开头的变量就对了) 
 
class  Window_Menu
end 
 
MENU_WIDTH = 200 
 
WindowMenu.new  #出错!Window_Menu错拼成WindowMenu! 
 
p  MENU_WITH #出错!!MENU_WIDTH错拼成MENU_WITH! 
#范例1:局部变量名字拼错 
 
actor = "Eric" 
p  actr #出错!actor错拼成actr! 
 
#范例2:方法名字拼错 
 
def  abcde
  p  "666" 
end 
 
abdef #出错!abcde错拼成abdef! 
 
#范例3:常量名字拼错(总之大字母开头的变量就对了) 
 
class  Window_Menu
end 
 
MENU_WIDTH = 200 
 
WindowMenu.new  #出错!Window_Menu错拼成WindowMenu! 
 
p  MENU_WITH #出错!!MENU_WIDTH错拼成MENU_WITH! 
4. No Method Error  未定义 方法 错误  找不到你要调用的方法 的时候出现的。是一个 String(字符串)类的对象,而它没有 abs这个方法。拼错了方法名 ,或者想使用的方法实际上不存在这个类里面(没有定义或者用undef注销了)。变量里面 存着的对象不是预期的类型 。arr = [ 1 ,2 ,3 ,4 ,5 ] 
arr.revrse 
arr.shufle 
arr.empty 
arr = [ 1 ,2 ,3 ,4 ,5 ] 
arr.revrse 
arr.shufle 
arr.empty 
错拼 成了revrse。错拼 成了shufle。少了个问号 ,写成了empty。arr = [ 1.6 ,2.3 ,3.9 ,4.1 ,5.5 ] 
arr1 = arr.select { |i| i > 7.0 } 
p  arr1[ 0 ] .round 
arr = [ 1.6 ,2.3 ,3.9 ,4.1 ,5.5 ] 
arr1 = arr.select { |i| i > 7.0 } 
p  arr1[ 0 ] .round 
空的数组 。arr = [ 1.6 ,2.3 ,3.9 ,4.1 ,5.5 ] 
arr1 = arr.select { |i| i > 7.0 } 
p  arr1[ 0 ] .round  if  !arr1.empty ? #加一个检测防止出事 
arr = [ 1.6 ,2.3 ,3.9 ,4.1 ,5.5 ] 
arr1 = arr.select { |i| i > 7.0 } 
p  arr1[ 0 ] .round  if  !arr1.empty ? #加一个检测防止出事 
5. System Stack Error  系统 堆栈 错误  系统堆栈深度过深 时,就会出现这种错误。class  Game_Battler < Game_Battler_Base
        alias  :new_initialize  :initialize 
        def  initialize
                new_initialize
                #增添的功能 
        end 
end 
class  Game_Battler < Game_Battler_Base
        alias  :new_initialize  :initialize 
        def  initialize
                new_initialize
                #增添的功能 
        end 
end 
同样的别名 被安到了同样的原方法 上超过一次(不同的原方法只会造成覆盖),系统就凌乱了。到底要用哪一个?都用吧?于是无限循环就出现了。class  Game_Battler < Game_Battler_Base
        alias  :new_initialize_a1234  :initialize 
        def  initialize
                new_initialize_a1234
                #增添的功能 
        end 
end 
class  Game_Battler < Game_Battler_Base
        alias  :new_initialize_a1234  :initialize 
        def  initialize
                new_initialize_a1234
                #增添的功能 
        end 
end 
6. Type Error  类型 错误  类型不匹配 而操作失败则出现此类错误。索引是整数 !除了索引之外,一些要求整数作为参数的方法,比如Array(数组)的delete_at(在输入的索引处删除),也会在输入非数字的参数时出错。数据的类型 ,是否与当前的操作所需的类型 匹配。在Ruby里字符串是不能和整数直接相加的,要切记啊!7. Float Domain Error  浮点 域 错误  转换 为整数时所出现的错误。8. Zero Division Error  除数 为零 错误  整数 除法的时候,如果除数为0,那么就会出现这种错误。这要看你的脚本而定了 。尽量避免除于零的状况吧。如果实在没办法的话,那么就使用if条件分歧,处理这个状况。当然要怎么处理,是你自己的决定。9. Regexp Error  正则表达式 错误  正则表达式 时,因编译失败而产生的错误。F1帮助文档 - 内建异常类 http://miaowm5.github.io/RMVA-F1 ... s/s_exceptions.html 展开折叠