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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

解決済

Unityで別クラスのメソッドを呼び出す方法

ppphysiccc
ppphysiccc

総合スコア20

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

2回答

0評価

0クリップ

11118閲覧

投稿2016/07/31 11:53

編集2016/08/01 00:54

最近Unityの勉強を始めました。
加速度センサを使ってカメラを動かすアプリの制作中です。

###前提・実現したいこと
以下のような作りになっております。

**カメラを動かすクラスA
・加速度とジャイロの値を取得して、カメラをあれこれ

加速度、ジャイロの値やFPSなどを表示するためのクラスB
・加速度とジャイロの値とFPSの値を取得してuGUI Textを利用して表示**

いずれ加速度の数値表示は削除するので今のまま直接クラスAで加速度の計算をしてしまってもいいのですが、コードをすっきりさせたいのと
今後も別のスクリプトに記述した関数や変数を呼び出したいといったことが多く出てくるかと思いますので、ここで覚えておきたいです。

現状は期待する動きにはなってはいるのですが、
前述した通りコードを整理している途中でして、加速度やジャイロ取得の値を2度記述している箇所を修正したいと思っています。

###試していること
クラスCを作成
・加速度を取得して加工するメソッド(accel)
・ジャイロの値を取得して加工するメソッド(gyro)
・FPSの値を取得して加工するメソッド(fps)
を作り、それをクラスA、Bで呼び出して使う。

例えばクラスCに

public Vector3 accel(){ Vector3 kasokudo = 加速度を取得; // 加工 return kasokudo; }

クラスAに

C classC; void Update(){ Vector3 test = classC.accel(); // **** //------略----- }

のような形で書いてみたりしています。

###発生している問題・エラーメッセージ
// ****の箇所で
NullReferenceException: Object reference not set to an instance of an object
というエラーが出てしまい、いまいち動きません。恐らく、classCがNullとなってしまっているためにエラーが出ているのだと推測しておりますが、
どのようにして修正を行えばよいのかわかりません。
調べてみてもインスタンス化辺りがいまいち理解できずにいます。

上記のことがやりたい場合はどのような記述を行えばよろしいのでしょうか。
すごく初歩的な質問かと思いますが、ぜひ宜しくお願い致します。

###補足情報(言語/FW/ツール等のバージョンなど)
言語はC#です。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

ozwk

2016/07/31 23:23

// ****部がそれで本当にそのエラー出てますか?
ppphysiccc

2016/08/01 00:13

はい、発生しております。 別スクリプトのメソッドを参照する実装方法としてはこの形で問題はないでしょうか? accelを同じクラスに置いた場合は参照できているので、もう少しでできそうなのですが非常にもやもやしてしまっています。。
ozwk

2016/08/01 00:24 編集

「new」とか入っていませんか?
ppphysiccc

2016/08/01 00:53 編集

大変失礼致しました。 昨日色々修正を試みておりましたので C classC = new C; // 記述していた void Update(){ Vector3 test = classC.accel(); // **** //------略----- } ようです。 質問内容にある通り実行をしたところ、正しくは// ****の箇所が NullReferenceException: Object reference not set to an instance of an object となります。 classCがNullとなってしまっているためにエラーになっているのではと推測しています。 情報の共有ミス大変失礼いたしました。
ppphysiccc

2016/08/01 00:53

こちらのフォームは改行が効かないのですね。。 本文を修正致しました。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。