質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

795閲覧

Unity C#で型推論について

momiji0210

総合スコア60

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2020/01/30 02:06

Unity C#型推論みたいな変数を用意したいです。
やりたいこととしては複数シーンあるゲームで、
シーンごとに変数に格納するScriptを変えたいです。

現在だとどのシーンにもMainCameraに必ず、
XXXXSceneManager というものがアタッチされています。

Unity

1 2// Aシーンでは 3ASceneManager scm = Camera.main.GetComponent<ASceneManager>(); 4 5// Bシーンでは 6BSceneManager scm = Camera.main.GetComponent<BSceneManager>(); 7 8scm.time = 10; // シーンごとに処理 9

scmという変数をあらかじめ用意して、シーンごとに読み込むものを変えたいのですが、こういったことはできないのでしょうか。

varだと初期化しないといけなかったり、nullを入れて
初期化を回避したりできなかったため詰まってしまいました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/01/30 02:27

「型推論」は専門用語なので、誤った使い方をすると読む人が誤解します。誤解すると意味が通じないので適切な回答ができません。難しく短い用語を使う必要はないので、誤解を招かないよう「初心者にもわかる言葉」で質問するのが良いと思います。
guest

回答1

0

共通の変数に入れたいということは、プロパティやメソッドなど共通のものがあってそれにアクセスしたいということでしょうから、インターフェイスを作って、そのインターフェイスで宣言してはどうでしょうか?

こちらで回答した感じですかね

投稿2020/01/30 02:14

YAmaGNZ

総合スコア10258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momiji0210

2020/01/30 07:16

ご回答ありがとうございます。 インターフェイスについて理解できてなくて申し訳ございません。 調べてみたのですが、よく理解できておりません。 その場合、scmという変数名はどうやって用意すれば良いでしょうか。 scmに入れたいのはscriptであることは間違いないのですが、シーンによってASceneManagerだったり、BSceneManagerだったりします。
YAmaGNZ

2020/01/30 07:31

リンクした回答は見ていただけましたか? そちらのサンプルコードを見ていただければイメージが沸くと思います。 scmという変数を用意することになるのは、サンプルでいうscriptCになります。 こちらにあるように インターフェース名 scm; といった感じで宣言すれば、そのインターフェースを実装しているものを格納することが出来ます。 ただ、ASceneManagerやBSceneManagerをscmに入れた結果、これをどのように利用するのか分かりませんので、私の回答は「共通のメソッドやプロパティを使いたい」という想像でしかありません。
Q71

2020/01/30 12:23

まず、ASceneManagerとBSceneManagerに、共通して行う操作(メソッド)を特定して下さい。それがinterface、他のオブジェクトとの接点です。同じ操作によって、シーンごとに異なる動作を実現します。 型推論は、代入するからこそ、型を推論できます。ライトウェイトランゲージでは、ダッグタイピングを行います。C#でこれを行うには、型に対して「このようなメソッドがあるか」と尋ねることになります。あまり、薦めません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問