未分類

スクリプト改良

未分類

今日は七夕か。星に願いを。星っていうか宇宙に願いを。

ワードプレスに問い合わせがあったようですが、コンタクトフォームにエラーがあったようでメッセージ本文が消し飛んでました。
アレ? と思ったら単純にエラーで、自分で実験してておかしいと思ったら、文字列が何故か抜けてました。それで不具合になっていて困ったもんです…。

結局うまくいかなくて元に戻した…というのが前回までの状態でしたが、あの後ダイアログ表示をOnInputで進めればいいのでは? と思ったので、スクリプトを集約してやってみたら、今のところは思うように動いてる感じです。不具合が出るかもしれませんが。

ダイアログを表示し、メッセージを出しつつ、OnInputでクリック入力をさせる。
だけど、表示が出る瞬間にクリック入力をされているのでダイアログ表示はされずに自動で次のシーンにジャンプします。そう考えるとこの記述はいらないけど、保険のために残します。少し待機時間があれば安定しそうだけど。


個人的には少し気になっていた部分だから、これに関しては「よくやった!」と言っていいでしょう。

これなら他で勝手にクリック入力をされるということはなさそうと思うんですけど、実際に弊害が出るかは後で確認が必要。
今度はどうだろう…。ユーザー側でのクリック動作は少しでも減らして遷移させられれば理想です。メニュー画面に戻る際もワンクリックになったから手間は減ったはず。


さらに、問題なのがこれ。SetActiv周りぐらいはスクリプトで集約できそうなんですけどね。
正直、手間で仕方ない。問題は地味にボタンで番号が変わってしまうという部分では汎用性が厳しそう。イベントトリガーぐらいはどうにかしたいですよね。ボタンのOnClickはやってみたんですが、うまくいかなかったから仕方ない。システム的にいつか変えるかもしれないと思ったら変にいじらない方がいいかも。


単純なイベントトリガーだけならこれでいいようですが、

using UnityEngine;
using UnityEngine.EventSystems;

public class PointerActiveController : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    [SerializeField] private GameObject targetObject; // On/Offする対象

    // ポインターが入ったときに実行される
    public void OnPointerEnter(PointerEventData eventData)
    {
        if (targetObject != null)
            targetObject.SetActive(true);
    }

    // ポインターが出たときに実行される
    public void OnPointerExit(PointerEventData eventData)
    {
        if (targetObject != null)
            targetObject.SetActive(false);
    }
}

E-moteをプレハブ化しているのもあれば、他で干渉しているせいかサムネ表示しているE-moteを反映させるには至らず。

ChatGPTで色々と聞いてみた結果、これならひとまず動作してるようです。
システム周りは諦めました。ジャンプシナリオ系をまとめるとどうも動作が怪しくなる。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class SelectableCharacterButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
    [Header("個別設定")]
    public string scenarioLabel;
    public GameObject characterObject;
    public GameObject textPanel;
    public GameObject image;

    private Button button;

    private void Awake()
    {
        button = GetComponent<Button>();
        button.onClick.AddListener(OnClick);
    }

    public void OnClick()
    {

        characterObject?.SetActive(true);
        textPanel?.SetActive(true);
        image?.SetActive(true);
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        characterObject?.SetActive(true);
        textPanel?.SetActive(false);
        image?.SetActive(false);
    }

    private EmotePlayer emote;

    private void Start()
    {
        if (characterObject != null)
            emote = characterObject.GetComponent<EmotePlayer>();
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        if (characterObject != null)
        {
            characterObject.SetActive(false);

            EmotePlayer emote = characterObject.GetComponent<EmotePlayer>();
            if (emote != null)
            {
                emote.UnloadData();
            }
        }

        textPanel?.SetActive(true);
        image?.SetActive(true);
    }

}

public string scenarioLabel;もいらないと言えばいらないけど、何を設定しているのかという意味で残してます。

textPanelとimageも共通なので本当は固定できればいいんですが、オブジェクトの外に出さないと動かなそう。それに、もしかするとこれらが表示されてサムネが表示されないというリスク。

地味に面倒なのがEmote.UnloadData();をアタッチする際に、スクロールが長いという欠点がありました。マウススクロールできないから地味に面倒。それやらないだけでも短縮にはなるはず。

さらにOnClickイベントで登録されていたおなじようなものもスクリプト化でまとめました。
こうするとコピペで一応は登録できます。

本当だったらさっさと組み込みを終わらせて、新規で下書きを作る予定がまたずれこみました。
膨乳版の方の組み込みやってましたが、翻訳データ入れる前にスクリプトいじりやってたから間に合ってません。

まあ、システム周りの基礎が出来上がれば、これからの作品で流用が効きますしね。
そういう言い訳にしておきます。

あと、SSDのデータが消える前だったからどうだったか忘れましたが、ラベルとシナリオ名が紛らわしいとそっちで反応してしまうようで、今度から差分の場合は分かりやすく頭に文字を付けた方がいいと気づきました。
アンダーバーで手抜きすると再生する時におかしくなってる。変に参照してる。




たまにはなんか息抜きでプラモぐらい買おうか? と思って考えても、以前に比べて明らかに購入に踏み切るというのがなくなりました。不思議ですね。

まあ、カネが足らないと思ってプラモが届いてもひたすら売り払ってたせいもあれば、見える範囲で7割以上片付けて視界からほぼ見えなくなってしまったのも要因かもしれません。

なんかもう、完全に割り切ってますよね。必要以上には手を出さない、仕上げ加工のエアブラシでコーティングすら面倒だと思ってしまったのは良くないかも。

組み立てたいけど、やる気が出ない…。
そう考えると何か時間が足らない、そうじゃないっていう意図があるような、全塗装しようものなら発狂しそうで怖い。やりたいのはやるとしても、もはや必要以上に手をかけたくないっていう心境。

その分は他で時間を使えっていうことなのかもしれませんが、きっかけ一つですべてが崩壊しそうです。投げ出すのは全部投げ出すレベルで。もう不要と思ったのはいつ投げ出してもおかしくないところまで来てます。

片付けられるのはひたすら抹殺に尽きる。
その分の時間は創作活動に費やされそう。


夕方以降は外気を卓上USB扇風機で取り込んだ方がかなり涼しいと気づいたものの、その卓上USB扇風機は塗装していた時に使っていたもので、汚れがひどくて羽の一部が割れてるっていう危険性がある代物です。
アクリルガッシュとかが固まったからひび割れはもう起きないかもしれないけど、ガラガラ音はするんですよね。適当なの買いに行こうと思ったんですが、手持ちのカネがないから我慢してます。あえてカネ使いたくない。

あ、2025年7月5日の災害予言は何も起きませんでしたが、本当は7月いっぱいまでが危ないっていうたつき諒の話です。クソテレビでも7月5日ばっかり言ってたから基本的に煽れるポイントしか取り上げず、YouTuberもやってたようですから実にしょーもない。

どいつもこいつもカネ稼ぎしたいだけのクソども。

本当の災害だったら、因果が積み重なり、もはやこの現世に必要ない人間は消されるだけだと思うよ。逃げ出す輩が出始めたら茶番が起きるか、起きる何かを知っているだけのこと。

何があっても死なない人間は役目があるけど、死ぬのが怖い人間は多分あっさり死にます。

コメント