RGSS3の組み込みクラスだけでは、できない処理がある。
例えばマウスの座標を取得したいなど。
その場合、dllを作成してRubyからそれを叩く必要がある。
プロジェクトはC++の「Win32プロジェクト」。
C#でdllを作成したいところだが、Rubyからマネージドなdllはコールできないので、C++を選択。
特定のウィンドウのマウス座標の取得は少し面倒だが、今回の趣旨ではないので、割愛。需要があったら別途書きます。
dllは以下のように2つのメソッドを持つものとします。
EXPORT int getMouseXpos(); EXPORT int getMouseYpos();
ビルドで生成したdllをRPGツクール側のSystemフォルダ以下に配置します。
RGSS3側でdllの読み込みと、メソッドの呼び出しを記述します。dllはhoge.dllというファイル名とします。
#dll読み込み
xPosAPI = Win32API.new('System/hoge', 'getMouseXpos', nil, 'i')
yPosAPI = Win32API.new('System/hoge', 'getMouseYpos', nil, 'i')
#メソッド呼び出しのサンプル
while 1 do
x = xPosAPI.call()
y = yPosAPI.call()
p "X = " + x.to_s + "/ Y = " + y.to_s
end
サンプルはループを抜けずにずっとマウス座標を取り続けるので、実際に使う場合は用途に合わせて修正してください。
Please give us your valuable comment