マップ上のイベントを複製する方法

作成日:
更新日:

マップに存在するイベントを任意のタイミングで複製する方法を知りたいです。

プログラミングは初心者なのですが、EventOnMapのInitでできるのかなと色々試してみましたが複製元も複製先も動きが止まってダメでした。(何故かイベントのページが0になる)

アドオンでもアドオン以外のスクリプトでも、イベントの複製を不具合なくできるコード、方法があれば教えていただきたいです。

 

    public GameObject orijinalGO;

    public void TriggerTest()     {         MapEventExecutionController meec = MapEventExecutionController.Instance;

        EventOnMap eventOnMap = orijinalGO.GetComponent<EventOnMap>();         EventMapDataModel eventMapDataModel = eventOnMap.MapDataModelEvent;         EventDataModel eventDataModel = eventOnMap.EventDataModel;

        EventOnMap eventOnMap2 = new GameObject().AddComponent<EventOnMap>();

        eventMapDataModel.eventId = "aiueo";

        eventOnMap2.Init(new Vector2(5,-5), eventMapDataModel,eventDataModel);         eventOnMap.SetUp(meec.GetMapDataModel);         eventOnMap.page = 1;     }

コメント

作成日:

なかなか難しそうなことにチャレンジされているのですね。 興味をそそられました。

「~DataModel」は、RPG Maker UNITE のエディタで管理されているデータだと理解しています。 つまり、開発時には編集できますが、ゲーム実行時に通常の方法で直接変更することは想定されていない のではないかと思います。

そのため、アドオンでイベントを複製することは、少なくとも公式が想定している方法では難しい可能性が高いです。

ただし、セーブデータモデルはゲーム実行中に変更可能なので、スイッチや変数を操作することはアドオンを通じても可能だと思います。

そこで、「イベントを任意のタイミングで複製する方法」を考えるよりも、 複製したいイベントの処理をコモンイベント化し、マップ上に複数のイベントをあらかじめ配置しておく という方法を検討されてはいかがでしょうか?

たとえば、

・事前に複数のイベントを配置しておき、それぞれをスイッチで制御する ・特定のイベントが発生したときに、コモンイベントを使って動作を共通化する といった方法なら、アドオンを使わなくても 「イベントを増やしたような状態」 を作れるかもしれません。


作成日:
更新日:

返信ありがとうございます!

懇切に考えていただいた上で教えていただいてとても嬉しいです。

やっぱり難しいんですね…! マップ上に同じようなイベントを20個とか置く場合が多く、そのイベントのページを増やすことになると20個のイベントを全部消してから複製しなおす必要があるので、複製するやり方をどうにか模索していきたいと思います。

とはいえ現状ではコモンイベントが一番理想に近いですね。それでやってみようと思います!ありがとうございます!