diary主にゲーム開発関連についての記事を書きます。2017の11日目の記事です。ものC++で新規のコンポーネントを作成コンポーネントのビルド、登録まで行います。コンポーネントの中身は空なので、ログを出したり更新処理や当たり判定を取ったりはまだやっていません。新規プロジェクトを作成すると下記にソリューションファイルも生成されます。Lumberyard\(EngineVersion)\dev\Solutions\(ProjectName)プロジェクトの作成方法についてはこちらを参照ください。papersloth.hatenablog.comさて、ソリューションエクスプローラーを見てみるとソリューション(ProjectName)の下に幾つかフォルダが並んでいて、その中に自分のProject名のフォルダもありますね。今回はCPPProjectという名前で作成しました。続いて、コードを追加していきましょう。ソースコードは下記に保存されています。Lumberyard\1.10.0.0\dev\(ProjectName)\Gem\Code\Source今回はここにComponentsというフォルダを追加しました。ソースコードを追加する場所はProject名のフォルダの下のProjectファイルの中です。UnityやUE4だとエディターから追加すると思いますが、Lunberyardは通常のC++のソースコードの追加方法になります。保存場所は先程追加したComponents以下を指定します。ドキュメントを見ながらそれっぽいコードを書いていきます。exampleProperty;};}ちょっと特殊なのが、AZ_COMPONENTの第2引数ですね。UUIDを入れる必要があるようです。Studioのツールから作成して設定しておきます。続いてHeader同様にcppファイルも書いていきます。Deactivateは先程のドキュメントを見てもらえればわかりますがInitだけ軽く説明をこちらにも書いておきます。UObject)に対して一度だけ呼び出されます。ComponentはすぐにActiveにならないことがあるため、ここで最小限のセットアップを行います。UE4:ctor)処理を長々とReflectに書きました。Reflectについてはこちら。Lumberyardこの辺りは自分もお作法として書いてるところですので、詳しい解説はまだできそうにないです。詳しく知りたい方はドキュメントを読んでいただければと思います。続いて、Wafビルドシステムへの通知を行います。LumberyardLumberyardのビルドシステムにコンポーネントの追加を知らせる処理を書きます。(ProjectName).waf_filesを開き下記のように記述します。続いてコンポーネントの登録を行います。登録するには先ずSource\Core\(ProjectName)Game.cppを開きます。全部をまるっと載せるのかなりの行数になってしまうため、変更点だけ載せます。true;}動作確認エンジンをビルドしてEditorを立ち上げます。ソースコードからEditorを立ち上げる場合はSandbox/Editorを使用します。Debugで実行してみましょう。エラーがなければ、エディターが立ち上がります。Entityの追加方法等はこちらを参考にしてみてください。Component"が選択できます。