立命館大学情報理工学部プロジェクト団体 ゲーム&CG部門 RiG++

新しいホームページに移転しました

https://rigpp.sakura.ne.jp/wp/

どうもさだです。

今年もGameMakerのことを書こうとしたんですが半年くらい触ってなかったのでちょっと書くことないです。

そういうことでUnityのエディタ拡張と作ったアセットのこととか書きますね。



Editor拡張入門

Q.Editor拡張 is 何?

A.UnityEditorを自分好みにすること

今回はコンポーネントにボタンを作ってみました。

こんなやつ

ボタンをクリックするとtestの中にあるButton()が実行されます。

作り方

  1. まずどこでも良いのでEditorのフォルダを作る。これがないと大概のEditor拡張が使えない
  2. その中にこのようなスクリプトを書く

拡張される側のスクリプトはEditorフォルダ以外に置いてね




アセット作った話

Googleのスプレッドシートに書いたデータを取ってきてScriptableObjectを作成するアセットを作りました。

これ

仕様

  • 使える型はint string floatのみ配列やboolは現時点では未対応
  • 型名を1文字でも間違えたらエラーがでる
  • 明らかにおかしい値を入力してもエラーが出る(例:int型なのに文字列を入力した時など

使い方

まずデータを入力する。

上から型名、変数名、それぞれのデータの順に入力する。

あとはこれをみながらやれば持ってこれます。

作ったScriptableObjectの使い方はこんな感じです。


ざっくりとした仕組み

  1. スプレッドシートをWebに公開したときにCSV形式の文字列を返してくれるURLがあるので、それを使ってとりあえず2次元配列に格納する
  2. 1行目に型名、2行目に変数名が格納されているのでその情報をもとにクラスのリストを作るC#ファイルを書き出す
  3. 書き出されたC#ファイルをもとにScriptableObjectを作成する
  4. 作られたScriptableObjectにCSVのデータを格納する

だいたいこんな感じです。



Q&Aコーナー

Q.RPG作ってたらHPが減りっぱなしなんだけどえ??

A.クラスは参照渡しなので値を渡さなきゃダメです

解決策はこんな感じに作成されたClassにClone()などのメソッドを追加してそれを使う

これはクラスのコピーを渡しているのでその分メモリ使用量が増える

他の解決策はこのクラスをそのまま使わずにHP計算とかをする

それでは良きUnityライフを!!!

明日はじーくらです

コメント欄を読み込み中