素人のゲーム制作記録

素人のゲーム制作記録

ゲーム作りにハマった人のモチベーション維持と自己顕示欲を満たすためのブログ

Amebaでブログを始めよう!
まず、スクリプトがアタッチされたオブジェクトがシーン上にある必要があるっぽい
実際そうなのか分からないけど、スクリプトを直接参照するのではなく、

1.スクリプトがアタッチされたゲームオブジェクトを指定
2.そのゲーオブジェクト内のスクリプトをGetComponentで呼び出し
3.classを呼び出す(呼び出すクラスはpublicである必要あり)

という手順でうまく行った。
(当たり前なのかもしれませんが、素人なので責めないで><
------------見本スクリプト-----------
//アタッチされたオブジェクトにプレイヤーが触れるとスコアが加算されてこのオブジェクトが消える
using UnityEngine;
using System.Collections;

public class score : MonoBehaviour
{
    private GameObject GameController;
    public int scoreValue;

    void Start()
    {
        GameController = GameObject.Find("GameController");
    }

    void OnTriggerEnter(Collider other)
    {
        GameController.GetComponent<ScoreManager>().AddScore(scoreValue);
        Destroy(this.gameObject);
    }
}
------------見本スクリプト-----------

いっっっっっつもここで詰まってたので、今後は気を付けよう(自戒
猫でもわかるシリーズ読んでてちょっと解消できた。

構造体は値型、クラスは参照型

なので
構造体はインスタンスを作ってそちらを変更しても元は影響しない。
対してクラスはインスタンスを変更するとすべてに影響する。


それと、構造体はnew演算子を使わないでインスタンス化するが、
できた構造体インスタンスは全ての値を設定しないと使うことはできない。
プログラム言語は様々なデータを操作することで入出力を行う、
その際、データにはいくつかの種類があり、これをデータ型という。

基本データ型は値型と参照型に大別され、
値型は整数、浮動小数点、論理型…等があり、
参照型はオブジェクト型、文字列型がある。

そして、C#には5つの型がある。
クラス(ユーザ定義の参照型データ型)、
構造体(ユーザ定義の値型データ型)、
インターフェース("セットにできるメソッドやプロパティの仕様を示すデータ型"継承の辺りで重要となってくる)
列挙型(”名前付き定数セットのデータ型”曜日や月など、個数の決まった複数データの操作に有効)
デリゲート(メソッドを参照するための型、今ではあまり使われていないらしい…引用元)

大きな型については、パーシャルタイプと言って、パーシャルファイルに分割することができる。
こうすることで、ファイル上は別のものだが、コンパイル時に1つにマージ(まとめ)される。
例として、コードジェネレーターはジェネレーターが編集するファイルと、プログラマが編集するファイルをパーシャルファイルとして分割している。
(これは素人が勉強のために書いたものなので、情報の正確さに責任は負えません)

データ型を目的別に分類するために存在するのが名前空間
namespace Example.Project
{
class test{  }
}
このような場合、Example.Project.testとすることで”明示的”に参照元を指定できる。

先頭に
using Example.Project;
とすることで、このファイル内ではtestクラスを名前空間を一々記述せずに、簡潔に呼び出せるようになる。

using Epro = Example.Project
とすることで、Example.Project.test()をEpro.testと簡潔に書けるようになる。

まれに、名前空間のバッティングが起こる場合、
glabal::Example.Project.test
とすることで、最上位の名前空間からのアクセスを明示することができる。