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

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

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

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

Unity3D

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

Unity

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

Q&A

3回答

3622閲覧

変数の初期化方法がわからない

zenbo0114

総合スコア53

C#

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

Unity3D

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

Unity

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

0グッド

0クリップ

投稿2017/01/08 06:06

C♯

1using System.Collections.Generic; 2using UnityEngine; 3using UnityEngine.UI; 4 5public class DORAcoin : MonoBehaviour 6{ 7 public Text scoreText; //Text用変数 8 private int score = 0; //スコア計算用変数 9 10 void Start() 11 { 12 score = 0; 13 SetScore(); //初期スコアを代入して表示 14 } 15 16 //cube同士での衝突+100 cube以外との衝突+100 17 void OnCollisionEnter( Collision collision ) 18 { 19 string yourTag = collision.gameObject.tag; 20 21 if( yourTag == "Cube" ) 22 { 23 score += 150; 24 } 25 SetScore(); 26 } 27 28 void SetScore() 29 { 30 scoreText.text = string.Format( "Score:{0}", score ); 31 } 32 }

このvoid SetScoreの初期化の方法がわかりません。
図々しいのはわかっているのですが、どなたか教えて下さい。
お願いします。

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

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

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

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

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

guest

回答3

0

こんにちは。

変数というのは、矢印のようなものです。それ自体に中身はなく、何かしらの「実体」に矢印の先を向けて初めて意味を持ちます。なので、変数を扱う際は、最初に矢印が指す先を自分で指定しなければなりません。矢印の先に指定する実体は「すでにあるもの」だったり、「新しく何かを作る」だったりするので、質問の情報だけではそれを示すことはできません。

実際の記述例などについては、今回は回答しません。これはC#の基本中の基本の部分なので、ここがわからない段階で何かを書こうとしても、何も書きあげることはできないからです。
まずはWeb上の情報や入門書などを使い、ある程度自習してください。この部分の解決法を直接教わってもその先がありません。

投稿2017/01/08 06:35

tamoto

総合スコア4103

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

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

matobaa

2017/01/08 07:14

tamotoさん、Unityタグが付いていることをふまえた上での回答でしょうか? https://teratail.com/questions/61263 から派生した質問のようなのですが、Unityの流儀があるのでどう答えたものかなぁと思っています。
tamoto

2017/01/08 07:31

どうもです。前の質問と合わせ、内容を見る限りUnityにspecificな話題ではなく、スクリプトとしてのC#の文法とその振る舞いが理解できていないようだったので、表面のレイヤ上で表現できる内容のみで回答をしました。「Unityの流儀」というのには詳しくないですが、「コード上で初期化されないフィールド」を持たせる設計が成り立つというのはあり得ないと思うのですが……。
ikedas

2017/01/08 08:31 編集

tamotoさんのご回答は適切だと思います。 一方、前質問でmatobaaさんは「Textをちゃんと指定してますか。TextのInspectorを見せてもらえますか。」とコメントしています。質問者さんがこの指示を理解できないのなら、基礎的な学習が足りていないと思います。公式サイトでチュートリアルのビデオを数時間見るだけで身につく知識だと思います (私は今日初めて見たけど、もう理解したよ!)。
zenbo0114

2017/01/08 08:24

Textはちゃんと指定しています。 tamotoさん、適切な回答ありがとうございます。 自分でしっかり勉強しようと思います。
ikedas

2017/01/08 08:42

勉強がんばって下さい。そしていつか、みんなを悩ます超難問を質問しにきて下さい。
matobaa

2017/01/08 09:44 編集

> 変数を扱う際は、最初に矢印が指す先を自分で指定しなければなりません これ、IoCが登場してきてから状況が変わっていて、私も最初、単に初期化してないだけじゃないかと思ったのですが、Unityのチュートリアルを見てみるとどうやらDIしてくれるらしく。となると「期待通りDIさせるには」という観点で回答すべきかなーと。私もUnityは詳しくないんですが。 なんか最初のコメントがケンカふっかけてるみたいですね、すみません、そういう意図はなかったです。
tamoto

2017/01/08 10:18

ほえー、なるほど、こういうコードで動作するDIがあるんですね……確かにそれを使ってるなら、環境側の設定でなんとかなるのかもしれませんね。自分の常識からすると、DIがプロパティじゃないというのはものすごい違和感がありますが…… コード上で初期化するのか、フレームワーク側から注入するのか、どちらかの正しいやり方が分かれば解決しそうですね。
guest

0

今日このサイトを利用しはじめた者で、たまたま1件目でこの投稿を表示させたのですが。
zenbo0114さんは、この問題について解決したのでしょうか?

元となっている質問の方も見てみましたが、まだ受付中のようでした。
既に、1日以上経過していますので、気になった次第です。

tamotoさんの回答は、とても重要な心構えであり、その重要性を知ってもらうために必要な回答をされていません。
これはtamotoさんの教えのスタイルであり、自分も賛同する考え方です。

一方で、何かをはじめて間もない人にとっては、今困っていることの直接の答えが知りたいのです。
ならば、答えてあげるのもまたひとつの教えのスタイルであると考えます。

というわけなので、回答したいと思うのですが、質問の内容が正直わかりかねていまして・・・

このvoid SetScoreの初期化の方法がわかりません。

とのことですが、zenbo0114さんは変数や関数といった違いもまだ把握されていないのかなと感じた次第です。
初期化したいとの事なので、score の事かな?っと思うのですが、Start()でそれらしいことはしていますし、どうしたものかと悩んで、こうした回答となっています。

解決されていればいいのですが、もし困っていましたら、現段階での状況を説明してもらえると答えられるかもしれません。

追記

元の質問をあまりちゃんと読んでませんでした。すみません・・・・
C# - 調べてもわからないエラーが起きました(T ^ T)(61263)|teratail

なるほど、

scoreText が初期化されていない。

とあったからですね。
その手前がNullReferenceExceptionですから、あぁそんなふうにエラーが続くのだと、まだ状況を把握し切れていませんが。

とりあえず、zenbo0114さんの現在の状況教えてください。
みんなが直接の回答をくれないのはあまりにも初歩的なことだからだと思いますが、わからないものはしょうがないですから、めげずに返信をもらえればなと思います。

投稿2017/01/10 01:18

編集2017/01/10 01:34
rrryutaro

総合スコア146

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

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

zenbo0114

2017/01/12 09:03

返信遅れて申し訳ございません。 11歳で何もわかっていなくて、 現状は、プレファブ化したオブジェクトにスコアテキストの指定がされていなかっただけみたいでした。
rrryutaro

2017/01/12 10:19

いえいえ。進んでいるのであればよかったです! すぐに答えをくれない人もいますが、zenbo0114さんの成長を願ってのことです。 とはいえ、やりたい事がうまくいかないと、嫌になってしまうものだと思います。 でも、やりたい事が出来てくると楽しいですよね! 今回のことにめげずに、困ったらまたどんどん質問を出してください。 あと、出来ればですが、質問を出して、解決できたなと思ったら、解決できた内容を書き込んで解決済みにすると、同じように困った人の助けになりますし、自分自身の復習にもなるかと思います。 これからも、がんばって下さい!(年齢にもおろどきました!)
guest

0

前の質問を少しみてきましたが、scoreTextには何の数字とかが入ってるんでしょうか?

投稿2017/01/12 11:13

toutou

総合スコア2050

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

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

zenbo0114

2017/01/12 11:21

ScoreTextには、Score:0を代入しています。
toutou

2017/01/12 11:24

void SetScoreというのは何ですか?変数ですか?
zenbo0114

2017/01/12 11:29

変数だと思います
toutou

2017/01/12 11:33

おそらくその答えだと難しいですね。変数には普通()はつかないものなんですよ。voidもまず変数とこの()つきのやつの違いを調べてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問