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

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

ただいまの
回答率

90.86%

  • C#

    5970questions

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

  • Unity

    3201questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1059questions

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

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

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 788

zenbo0114

score 35

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DORAcoin : MonoBehaviour
{
        public Text scoreText; //Text用変数
        private int score = 0; //スコア計算用変数

        void Start()
        {
            score   = 0;
            SetScore();   //初期スコアを代入して表示
        }

        //cube同士での衝突+100 cube以外との衝突+100
        void OnCollisionEnter( Collision collision )
        {
            string yourTag  = collision.gameObject.tag;

            if( yourTag == "Cube" )
            {
                score += 150;
            }
            SetScore();
        }

        void SetScore()
        {
            scoreText.text = string.Format( "Score:{0}", score );
        }
    }


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • matobaa

    2017/01/08 15:36

    https://teratail.com/questions/61263 と重複

    キャンセル

  • 退会済みユーザー

    2017/01/08 17:34

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 3

+2

こんにちは。

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/08 16:14

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

    キャンセル

  • 2017/01/08 16:31

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

    キャンセル

  • 2017/01/08 17:31 編集

    tamotoさんのご回答は適切だと思います。

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

    キャンセル

  • 2017/01/08 17:24

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

    キャンセル

  • 2017/01/08 17:42

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

    キャンセル

  • 2017/01/08 18:44 編集

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

    キャンセル

  • 2017/01/08 19:18

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

    キャンセル

+1

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

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

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

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

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

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

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

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

 追記

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

なるほど、

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/12 18:03

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

    キャンセル

  • 2017/01/12 19:19

    いえいえ。進んでいるのであればよかったです!
    すぐに答えをくれない人もいますが、zenbo0114さんの成長を願ってのことです。
    とはいえ、やりたい事がうまくいかないと、嫌になってしまうものだと思います。

    でも、やりたい事が出来てくると楽しいですよね!
    今回のことにめげずに、困ったらまたどんどん質問を出してください。

    あと、出来ればですが、質問を出して、解決できたなと思ったら、解決できた内容を書き込んで解決済みにすると、同じように困った人の助けになりますし、自分自身の復習にもなるかと思います。

    これからも、がんばって下さい!(年齢にもおろどきました!)

    キャンセル

-1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/12 20:21

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

    キャンセル

  • 2017/01/12 20:24

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

    キャンセル

  • 2017/01/12 20:29

    変数だと思います

    キャンセル

  • 2017/01/12 20:33

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

    キャンセル

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

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • C#

    5970questions

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

  • Unity

    3201questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    1059questions

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