*

[C#, Generic]UnityのAddComponentとかなんとかComponentを実装してみる

公開日: : C#

UnityのAddComponentってありますよね。
GameObject.Find("Text").AddComponent<Text>(); みたいなやつ。

このジェネリクスの部分を作ってみたかった。

継承元のスーパークラス

まずは大本の部分です。

こんな感じで宣言して、コンポーネントを追加削除をしたくなるようなオブジェクトたちはこれを継承させます。
ジェネリクスでどんなコンポーネントも追加できるように記述しています。
Addしたときにその追加したコンポーネントの実体が欲しいので、戻すように where T : IComponent, new() と記述してインスタンス化できるようにもしておきます。引数のあるインスタンス化は普通はできないので、また今度別記事で。

継承しましょう

基底クラスが出来たのでサブクラスを作ります。

これがなくては始まらない。コンポーネントの作成。

コンポーネントがないとテストが出来ませんね。
適当に作りましょう。

文字列と数字を扱う適当コンポーネント。

メイン処理

準備が出来たのでメインの処理で実際に利用してみます。

結果

3回目のコントロールが呼ばれた後、罫線が出ずに TextComponent:変更後と出ています。
これはコンポーネントを直接いじって、オブジェクトを経由せずコンポーネントの Control() を呼んだためですね。

ジェネリクスは利用するばかりで、あまり自分で作ったことはなかったのですが、慣れると便利な使い方ができますね。
機能を委譲してるので、拡張しやすくていいです。

ad

関連記事

unity toggle button label

[Unity]コードリファレンス テキストを表示する。

テキストを表示します。 OnGUI() Unityでテキストを表示する場合は、OnGUI()

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 番外編 これパズドラじゃなくね?

前回の続き。 パズドラみたく直線で3つ以上連なっているときに消したいんです。 そして、何を勘

記事を読む

unity rotate worldpoint

[Unity]コードリファレンス GameObjectを回転する。

くるくる回します。 rotationプロパティ Objectの向きをワールド座標で指定します

記事を読む

instantiate cube unity

[Unity]コードリファレンス GameObjectの複製

GameObjectを複製します。 Object.Instantiate(Object ori

記事を読む

logo

[C#, AS400]列挙体の文字列化&DB2/400にODBC接続

定数をなるべく書きたくないんです。 あとからメンテをするときに複数箇所変更しなくてはいけないから。

記事を読む

VisualStudio_

[C#,Excel]visual studio tools for office(VSTO)を利用してExcelのAddInをC#で作る

いい加減VBAが嫌になってきたので、調べたらC#でExcelのアドインが作れるんですね。 というわ

記事を読む

Wannabenote

[Unity]Unity2Dチュートリアル 繰り返しパズルを消す その2

Unityまとめページはこちら。 前回の続き。 準備が出来たので、ソースを変更致しましょ

記事を読む

logo

[C#]AS400をDBに見立ててPCのPGMからODBC接続する

◆前提条件◆ PCにClient Accessがインストールされている。 PCに.NET Fra

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトをドラッグ(タップ)して移動する

前回はスプライトの簡単な操作を覚えました。 今回はスプライトを移動させてみましょう。 ドラッグして

記事を読む

logo

[C#]XML Serializerで読み書き

XML XMLを触りたいので適当にメモ書き 書き出し using System.IO;

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑