スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)

外部ファイルの読み込み

 2009-12-09
今回は、外部ファイルを読み込む方法について紹介したいと思います。

普通は、こんなこと必要ないと思いますが、
Rubyの添付ライブラリや拡張ライブラリが使ってみたくなったときにでも
思い出していただけたらと思います。


1.ロードパスの設定
読み込みの処理などを行う前にこのロードパスというものを設定する必要があります。
これは、require などの外部ファイルを読み込む際に、検索されるフォルダのリストです。

ゲーム起動時には、このリストは空ですのでファイルを相対パスで指定することが出来ません。
また、環境によってフォルダの位置が変わってきますので、純粋な絶対パスで指定することもできません。
('C:\Documents and Settings\CACAO\My Documents\RPGVX\Project1\file'というような。
これがしたい場合は、File.expand_path('./file')とします。)

では、ロードパスの設定方法を。
ロードパスは、$LOAD_PATH または、$: という組み込み変数に配列で格納されています。
$: << File.expand_path(".")



2.require
RGSS2では、直接このメソッドを呼ぶことができません。
ですので、次のように実行します。
Kernel.require 'FileName'

では、読み込むファイルを作成します。
# hoge.rb
module Hoge
  def self.hoge
    p "ほげ~"
  end
end
print "外部ファイルの読み込みを完了しました"
ファイル名は、"hoge.rb"で文字コードを"UTF-8"にして保存してください。
文字コードを指定するのは、この文字コードでなければ文字化けしてしまうからです。

ちょっと、ここで裏話。。。
どのパソコンにも入ってるメモ帳を使って、
ファイルを作成したんだけど、エラー出ちゃった><;
例外
Rubyファイルを開いて中身を確認。問題ない。
ふと下に目をやると。。。

BOM付きの文字が!キサマか!!!
BOM
改めてBOM無しで保存して実行。
読み込みに成功したよ!

メモ帳では、作れないみたいだから、
以下2つのエディタを使っての保存方法を紹介するよ。
>> TeraPad
TeraPad

>> JmEditor
JmEditor

保存場所は、実行ファイルの置いてあるフォルダです。
Directory
うちは、Rubyファイルを登録済みなのでアイコンとか表示されてますが、
表示が違っても問題ないです。
編集したい場合は、テキストエディタに放り込んでもらえば読み込むと思います。

次のスクリプトを実行して、
「外部ファイルの読み込みに成功しました」と表示されれば成功です。
$: << File.expand_path(".")
Kernel.require 'hoge'

require で読み込むのは1度だけです。
例えば、次のように2度記述しても読み込みが行われるのは、最初の1回だけです。
これは、RGSS組み込みクラスと同じですね。
もしF12リセットを行っても、読み込みは行われません。
Kernel.require 'hoge'
Kernel.require 'hoge'

読み込まれているファイルを確認したい場合は、
組み込み変数 $LOADED_FEATURES もしくは、$" の値を見ます。


3.load
こちらも基本的には require と同じです。
ただ以下の点が異なります。
1.拡張子を自動補完しない。
2.何度でも読み込みを行う。

注目は、何度でも読み込みを行う点ですね。
Kernel.load 'hoge.rb'
Kernel.load 'hoge.rb'
メッセージが2回表示されれば成功です。

こちらは、F12リセットを行えばファイルを読み直すということですね。


4.autoload
こちらは、ちょっと特殊なもので、初めて呼び出されたときに読み込みを行います。
使い方は、autoload(const_name, feature) です。
const_nameで指定した定数を参照したときに、feature を require します。
定数名は、文字列かシンボルで指定します。

Kernel.autoload(:Hoge, 'hoge.rb')
さらに、イベントコマンドのスクリプトに
Hoge.hoge と記述して、実行してみましょう。

まず、p が実行されないことでファイルの読み込みが行われずにゲームが開始されていることがわかります。
次にイベントコマンドを実行すると、pが実行されファイルが読み込まれたことがわかります。
その後、メソッドの処理も実行されれば成功です。



えっと、以上がRuby プログラム ファイルを読み込む3つの方法でした。
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/333-d12ba7da
≪ トップページへこのページの先頭へ  ≫
カレンダー
07 << 2017/08 >> 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

カテゴリー
最近の記事
最近のコメント
03/16 お返事
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事

タグクラウド

リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。