ページ 11

【解決済み】ゲームオブジェクト名を短くするには

Posted: 2016年9月05日(月) 21:30
by aiueo
ゲームオブジェクト名を短くするには

$game_variables や $game_self_switches といったゲームオブジェクトは表記が長いので、
マップ画面のイベントコマンド「スクリプト」の入力欄ではスペースが足りなくなります。
例えばスクリプトでピクチャを表示したい場合
screen.pictures[1].show($game_variables[1], 0, 0, 0, 100, 100, 255, 0)

n = screen.pictures[1]
m = $game_variables[1]
n.show(m, 0, 0, 0, 100, 100, 255, 0)
のように長い部分をローカル変数に代入したり改行などして、
入力欄にある程度は収めることが出来ますが、
その分だけ行数を消費します。

試しにスクリプト画面でShift+Ctrl+Fで$game_variablesを検索して、
全部$GVと書き換えると一応動作はするようです。
しかし直接書き換えるのはあまりいい方法とは思えません。
もっと良い方法はあるでしょうか。

以上宜しくお願いいたします。

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月05日(月) 21:54
by ONOZUKA
もっといい方法もあるかもしれませんので、一週間くらいは返答待ってみてください。

配列を代入して行数を1減らす方法。
nn = [screen.pictures[1],$game_variables[1]]
nn[0].show(nn[1],0,0,0,100,100,255,0)

計算部分などには使える、Game_Interpreter
Game_Interpreter
def picture_show #picture_showとスクリプトに打てば起動
n = screen.pictures[1]
m = $game_variables[1]
n.show(m, 0, 0, 0, 100, 100, 255, 0)
end

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月05日(月) 22:35
by aiueo
ONOZUKA様ありがとうございます
了解しました

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月05日(月) 23:23
by ショウ
m = "pictureフォルダ内の画像のファイル名"
n = screen.pictures[ピクチャ番号を]
n.show(m, 0, 0, 0, 100, 100, 255, 0)

行数は減りませんが個人的にはピクチャを表示するなら$game_variablesを使うより
これが分かりやすくて良いと思います。
これならファイル名の書き換えだけでよく、
いちいち$game_variablesにファイル名を代入する必要も無く使いまわしやすいです。
更に短くしたいなら画像のファイル名を短くする事でしょうか。

また余談ですが、$(グローバル変数)を使ったイベントスクリプトの場合例えば
スクリプト:$sc = screen.pictures[ピクチャ番号を]
文章の表示
スクリプト:m = "pictureフォルダ内の画像のファイル名"
       $sc.show(m, 0, 0, 0, 100, 100, 255, 0)

というようにイベントを組んだ場合、
コマンドをわけても有効で使い方次第では行数は一応減ります。

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月06日(火) 01:31
by オシブ
究極的には、Game_Interpreterに直接書いてしまうという手があります。

class Game_Interpreter
def picture_event_command(n, m)
screen.pictures[n].show(m, 0, 0, 0, 100, 100, 255, 0)
end
end

と書いて、イベントコマンドのスクリプトに
picture_event_command(1, $game_variables[1])
と書けば一行です。
その他、カスタマイズしたいことがあれば、全てdef picture_event_command 内に設定すれば
とても便利に自分好みのイベントコマンドが作れます。
イベントコマンドのスクリプトが使いこなせるようになったと感じてきているなら、たぶんそんなに難しくはないと思います。

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月07日(水) 00:41
by aiueo
ショウ様
オシブ様
ありがとうございます

全部試して動作確認いたしました
ピクチャ表示以外にも、ゲーム変数に配列を使ったりすると入力欄が一杯になります
今まではなんとか収まってましたが
今回教えて頂いたテクニックで色々改善できそうです
ありがとうございました

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月12日(月) 15:05
by CACAO
解決してそうですが、横から失礼します。

私も Game_Interpreter クラス内に新たにメソッドを作成する方が
使い回しや修正が容易になるので良いかと思います。

ただ、タイトル通り単に短くする方法もあります。
Ruby では、グローバル変数の別名定義ができたはずです。

alias $gv $game_variables

とすることで、$gv と $game_variables が同じ変数を指すことになります。
そのはずです。。。

グローバル変数のエイリアスなので、どこでも可能だと思いますが、
トップレベルでまとめて実行してしまうのが良いかと思います。

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月12日(月) 23:42
by aiueo
CACAO様ありがとうございます

トップレベルは
       ←
▼ モジュール
Vocab
・・・
の上の欄でしょうか
alias $gv $game_variablesを貼り付けて
イベントコマンド「スクリプト」で$gv[20]="ツクール"とか動作するのを確認しました
短くなるので配列同士の代入とか楽になりそうです

ありがとうございました

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月13日(火) 19:20
by CACAO
トップレベルは、クラスやモジュールを定義する一番外側の場所です。
p self として main と返されるところですね。
セクションのような上下の関係ではないので、
セクションは、▼ 素材より下の方が良いと思います。

コード: 全て選択

-- ここ --
class Hoge
end
-- ここ --
module RPG
  class Piyo
  end
end
-- ここ --

Re: ゲームオブジェクト名を短くするには

Posted: 2016年9月29日(木) 21:48
by aiueo
CACAO様ありがとうございます
トップレベルはそういう事だったとは・・・
やっとわかりました
ありがとうございました