忍者ブログ

へぷたなすくろーる

RPGツクールのブログです。イベント講座とRGSS3スクリプト配布をやってます♪

Home > > [PR] Home > 道しるべ > スクリプトエラー撲滅キャンプ(1) NoMethodError

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

スクリプトエラー撲滅キャンプ(1) NoMethodError

スクリプトのエラーが起きた場合の初心者なりに原因と対策を調べる方法~♪
スクリプト導入でエラーが出る人や、手探りで書いてみてエラーが出る人の参考になれば。
あくまで私の知識と経験則に基づいているのと
ツクール始めたての人には流石に難しいかもしれない
という2点は先にお断りしておきますね。

まずはその豪腕でエラーの7割を叩き出すと言われている(当者調べ)
エラー界の安打製造機ことNoMethodError(ノーメソッドエラー)さんです。
スクリプト'どこそこ'の00行目でNoMethodErrorが発生しました。
undefined method 'なんたら' for nil:NilClass
ノーメソッドの名の通り、こいつが主張しているのは
「メソッドを呼び出せって命令されたけども、そんなメソッドないアルヨ」
ってことです。
だからエラーメッセージの「どの箇所で呼び出されたか」「何というメソッドを呼び出した」
という情報がとても大事になります。
メソッドというのは簡単に言えばdef~という部分のことですが
このエラーが指すのはそれだけじゃなくて「変数の呼び出し」も含みます。
また同じくNameErrorというのもこいつの兄弟みたいなものなので、まとめて扱います。
(原義はともかく、この2つの違いは書き方によるもので殆ど誤差ですから)
原因を探すときにはCtrl+Shift+Fの全検索を活用しましょう。
エラー箇所が○○.××.△△とドットで続いている場合は最後の△△だけを検索します。

'Game_Interpreter'の1409行目
時に「'Game_Interpreter'の1409行目」でエラーが起きます。
これはイベントコマンドのスクリプトを使ってエラーを起こしたということです。
この場合、該当箇所を見てもeval(script)とあってエラーが特定できません。
イベントコマンドを調べなおし、エラーが起きたときに呼び出したメソッドを探すようにします。

原因その1「スペルミス」
さていきなりズッコケな原因ですが、実は一番ありえるミスです。
明らかに英単語をスペルミスしている場合や
上下のメソッド名を確認したり、全検索をかけて
「その名前は他に使われていない」「似ている名前が頻繁に使われている」などは特に疑うべきです。

また複数形のsが曲者で、これは日本人にとっては付け忘れやすい上に
actorとactorsなどは両方別々に使われている為ややこしいです。(作者からすると使い分けに便利なので)
他には_(アンダーバー)と-(ハイフン)は取り違えや省略がおきやすいです。
確実に見つける方法はありませんが、念頭においておくと発見しやすいでしょう。

原因その2「メソッドがない」
通常、素材配布しているようなスクリプトなら
メソッドそのものを作り忘れるという大ポカをやる人は少ないです。
ですが、前提スクリプトやベーススクリプトを指定していることは多く
それらを入れ忘れてしまうとメソッドがない事態も発生します。

原因その3「そのメソッドと関係がない」
呼び出せるメソッドは自分のクラスが持っているものか
そのスーパークラスに設定されているクラスのものだけです。
例えばGame_ActorはGame_Battler(親)のメソッドを呼び出すことはできますが
Game_Enemy(兄弟)だけが持っているメソッドを呼び出すことはできません。
配列に使うメソッドを文字列には使えませんし、その逆もしかりです。
良く使われるようなメソッド名は被ることが多いので
「○○が使えたから××も同じように使えるはず」という感じで失敗することが多いです。

さて、第一回はこの辺で終了です。
基本的にこの3つが主な原因と言えるでしょう。
第二回では他の原因も挙げつつ、具体的な調べ方を紹介します。

拍手[4回]

PR
-->
Responses0 Responses
  • お名前
  • タイトル
  • メールアドレス
  • URL
  • パスワード

ブログ内検索

アーカイブ

最新コメント

[01/20 NONAME]
[01/16 NONAME]
[12/30 NONAME]
[12/13 NONAME]
[12/01 NONAME]

プロフィール

バナー

HN:奈々(なな)
RPGツクールVXAceを中心に製作を行っています。 スクリプト、イラスト、ドット絵など広くちょこちょこ手を出していますので、 できる範囲で他のツクーラーさんのお手伝いができたらなと思っています。