カスタムメニューで設定画面を作りたい。(質問掲示板

投稿: 128 mini fragile 投稿:2012/10/01 20:35:01(最新:2012/10/06 01:47:06)
よくゲームのオプションで
◇ BGM 3 ◇
   SE  2

みたいな上下で選択、左右で調整する画面がありますよね?

カスタムメニューで実装してみたいのですが、
設定を開くと薄暗い画面になり、それを閉じた上で操作する形になってしまいます。
薄暗い画面のまま操作するにはどうしたらいいでしょうか?


開始スクリプト
#名前とか
setCustomParamMenuEnable(true)
setCustomParamMenuName("設定")

#関数の省略
def sv(a,b)
setVariable(a,b)
end
def gv(a)
return getVariable(a)
end
def ca()
return createArray()
end

#設定項目。今回はBGMとSE
sv("BGM", 3) ; sv("SE", 3)
def onShowCustomParameter() 

 #上から何番目を選択しているか
 No = 0

 #選択中の枠を作る
 c = createText(322, 80+28*No, 512, 384)
 setText(c, "◇       ◇")

 #設定項目の下準備
 i=0 ; a=ca() ; b=ca()
 while i < 2 
 a[i] = createText(350, 80+ 28*i, 512, 384)
 b[i] = createText(404, 80+ 28*i, 512, 384)
 i=i+1
 end

 #実際に文字を入れる
 setText(a[0], "BGM") ; setText(a[1], "SE")
 setText(b[0], gv("BGM")) ; setText(b[1], gv("SE"))

 #ここから操作
 startInput()
 loop=true 
  while loop 
   while hasInput() 
   takeInput()
    
    if isKeyDown("ENTER") #Enterで終了
     loop=false 
    elsif isKeyDown("UP") #枠を上に
      if No > 0
      No = No - 1
       deleteText(c)
       c = createText(322, 80+28*No, 512, 384)
       setText(c, "◇       ◇")
      end
    elsif isKeyDown("DOWN") #枠を下に
      if No < 1
      No = No + 1
       deleteText(c)
       c = createText(322, 80+28*No, 512, 384)
       setText(c, "◇       ◇")
      end
    elsif isKeyDown("LEFT") #値を小さく(最低1)
      case No
      when 0
        if gv("BGM") > 1 then sv("BGM", gv("BGM")-1) ; end
      when 1
        if gv("SE") > 1 then sv("SE", gv("SE")-1) ; end
      end
    elsif isKeyDown("RIGHT") #値を大きく(最高5)
      case No
      when 0
        if gv("BGM") < 5 then sv("BGM", gv("BGM")+1) ; end
      when 1
        if gv("SE") < 5 then sv("SE", gv("SE")+1) ; end
      end
    end 
   
   end
   
  #画面に反映
  setText(b[0], gv("BGM")) ; setText(b[1], gv("SE"))
  waitTime(30)
  
  end
  endInput()

#後処理
deleteTextAll()
end

コメントする

コメントするには、ログインする必要があります。

コメント一覧

Nyan mini rurun9(投稿日:2012/10/05 00:08, 履歴)
>薄暗い画面のまま操作する

たぶん、無理だと思います
そもそもがデータ項目を表示する為だけの仕様なのだ、と。
同じ理由から以前の コレ も無理かなぁ、と。

一応絵が出せるので、全画面を覆う透過色で薄暗い画面を自分で作っちゃえば、結局なんとなーくそれっぽい事もできるようなできないような?


関係無いけど、位置と大きさが固定なテキストエリアは毎回削除せずに、書いた字を消す場合は " " スペースを書き直せばいいと思うよ
128 mini fragile(投稿日:2012/10/05 13:38, 履歴)
あ。そういえば以前そういうの作ったの忘れてた(^^;
やっぱスクリプト内にそれっぽい記述がない=スクリプトじゃ制御できない
ということですかね...


>>位置と大きさが固定なテキストエリア
y座標が変わっているのでとりあえずこの形にしてます。
Cdv30200 aoi icon mini aoihikawa(投稿日:2012/10/06 01:47, 履歴)
deleteTextやcreateTextは
意外と重い処理なので
ループさせて使用する場合

あらかじめ必要な数(設定したい位置の数)だけ
複数の位置で設定したテキストエリアを
用意しておき、

テキストの内容変更で
表示位置を変えているように
見せかけるのが良いかと。