ヒビコレマッサージをDL・遊んでくださったかたありがとうございます!
なにかあればメールや問い合わせで知らせてもらえると助かります。
問い合わせ欄、グーグルフォームでつくったんですがなぜか通知が届かないのでちょっと遅れたりするかもしれませんが、確認はしますので!
・・・
ということでタイトルの通りunityで脱出ゲームをつくっています。
今こんな感じ↓
unityの勉強をしていると、脱出ゲームがつくりやすいとのことなので教えにならってつくろうと思います。
ただ私は脱出ゲームで脱出できない人間なので、ものすごく簡単なものになります。謎解きとか本当にできない。
でも脱出ゲーム好きなんですよね。すぐ攻略見ちゃうけど。
内容は『先輩の彼女と部室に閉じ込められてしまった!』みたいな感じになる予定です。
エロはなし。フリーで公開します。
ずっと眠らせてた宴がやっと使えるので、会話シーンのつくりかたをいろいろ試してたんですが、UniTaskを使うと簡単に制御ができるので感動しています。
フラグ等の条件を満たしたときに宴を呼び出してイベント再生、終了を待ってunity側にもどるという使いかたなんですが、
using Utage; //宴
using Cysharp.Threading.Tasks; //UniTask
public class GameManager : MonoBehaviour
{
public AdvEngine engine; //宴エンジン読み込み
・・・
//イベント呼び出し
async void IbeCall(string i)
{
//処理後にunitaskを止めるためのもの
var cr = this.GetCancellationTokenOnDestroy();
//宴に行く前の処理をここに書く
messeclick.SetActive(true);
//宴のシナリオに飛ぶ
engine.JumpScenario(i);
//イベント終了待ち
await UniTask.WaitUntil(() => engine.IsEndScenario == true, cancellationToken: cr);
//イベント終了後処理をここに書く
messeclick.SetActive(false);
}
使うときはこれ
IbeCall("*ラベル名");
UniTaskを使えば会話中はキャラの動きを止めるとかもできそうですね。すごい。
ちなみに『messeclick.SetActive(true);』っていうのは、ボタン等のUIがあっても宴が再生中ならメッセージクリックを優先するためのものです。
公式のO&Aを見てカメラの深度を変えたりしたんですが、どうしても下にボタンがあるとメッセージ送りが反応しないのでhttp://madnesslabo.net/utage/?page_id=9794#i-5を参考につくってみました。
public class GameManager : MonoBehaviour
{
public AdvEngine engine; //宴エンジン読み込み
public GameObject messeclick; //全画面ボタン
AdvUguiManager UguiManager { get { return uguiManager ?? (uguiManager = FindObjectOfType<AdvUguiManager>()); } }
public AdvUguiManager uguiManager;
//メッセージクリック処理
public void MesseCrick()
{
UguiManager.OnInput();
}
あとはこれを全画面の透明ボタンに追加してヒエラルキーの下のほうに配置すれば、会話シーンのときは宴のメッセージ送りが優先されると思います。
unityをはじめて触ったとき、とにかく非同期処理がややこしくて積んでたんですがUniTaskのおかげでなんとかなりそうです。
楽しい~