0コメント

自分用 Csherp言語におけるどうこう

int 整数(MSBを除く32bit領域)
double 倍浮動小数点数(第十四位)
float 浮動小数点数(第七位)
char 文字型
string 文字列型

8bit sbyte
16bit short
32bit int
64bit ling

★varキーワード
var example = false;
var example2 = 3.14;
varは変数を宣言するという点では普通だが、代入値に依存し自動で型を推論する。
exampleはbool型と推論・宣言されexample2はfloat型で推論・宣言する。

変数など、プログラマが自由に名前を付けることの出来るものを識別子(identifier)と呼ぶ。
先頭に @ を付けることで、 キーワードも識別子として利用可能になる・
@int @for @this 等。

静的メンバー(static member)は「アプリケーションにただ一つだけ生成」という意味が込められており、
static,静的メンバーで変数を生成するとメモリ領域内に一つしか存在しない。これをクラス変数という。

クラス: データ(変数と定数)とそれを扱うための手続き(メソッド)を含むオブジェクトの設計図

      class クラス名
      {
           データ
           メソッド
             :
      }

 インスタンス: クラスに基づいて作り出された実体。new演算子を使って生成する

      クラス名 変数 = new クラス名( );

 このようにしてクラスからインスタンスが生成され、代入した変数を使ってインスタンスを使うことができるようになる。

メンバメソッド: クラス内で定義されるメソッド(C言語での関数)main関数start関数update関数、全て関数をメソッドに置き換えたようなもの

スクリーンショット 2021-01-17 004437.png
classはプログラムの大本。大きなまとまり。
void shaberuはメソッドと呼ばれる。
そんでstring nakami;はclass共通で使用できるstring型の変数。
これはclass直下でメソッド外に生成された変数であり、クラス内メソッドで共通で読み書き出来る。これをメンバ変数と呼ぶ。

privateを指定するとクラス外から読み込むことは出来ない。

class Message
{
    static int count;
    String msg;

    public void setMessage(String s)
    {
        msg = s;
    }
}
class Message SampleBBz
{
    public static void main(String args[ ])
    {
        Message.count = 0;
        Message m1 = new Message();
        Message.count++;
        m1.msg = "Hello";
        Message m2 = new Message();
        Message.count++;
        m2.msg = "World";
          :
    }
}



このMessageクラスにおいて、static定義されたmain関数もとい、mainメソッドをクラスメソッドといい、setMessageはstaticでないのでインスタンスメソッドと呼ぶ。
このプログラムでは、メソッド外で静的なクラス変数としてcount変数を宣言。msg変数は

  Message m = new Message();
これは、Message()を作成しMessageクラスの変数mに代入することで、mという変数を使用しインスタンスを操作する。

Messageクラスの変数mつまり、Messageクラス型の変数。

・・・イマイチピンとこないなぁ

★連番
スクリーンショット 2021-01-17 025357.png
こちらメソッドとして使用されているPlayerState
enum型という型で宣言されている。

定数値を決めて変数を宣言する事が出来るのがこのメソッド。メソッドって言うのかは知らんが。
これは、変数を順番に値を代入した状態で宣言するという物だ。
この場合は、WAIT=0,RUN=1.DAMAGE=2,DEAD=3・・・のように連番で宣言するという仕組みになる。

★コンポーネント単体への干渉
gameObject.transform.position.x = 3; // エラー
っていうときエラーが起きる。xにダイレクト干渉しようとしたのが原因らしい。

回避するために、
Vector2BulletPosition = gameObject.transform.position;
BulletPosition.x += -5;
GameObjectclone = Instantiate(ballBulletPositionQuaternion.identity);

てな感じで。一度Vectorストラクトの変数に入れて,それを流用することで回避が出来た。
https://qiita.com/ShirakawaMaru/items/b2c19764c7971d1e1550
Vectorストラクトについてはこのサイトを閲覧。

〇インデックス
  • a[^i]で「後ろからi番目の要素」を参照
  • a[i..j]で「i番目からj番目の範囲」を参照
なんかこんな参照方法があったがオマケ程度で。

インデックスとは、「索引」「見出し」という意味で、プログラムやデータベースなどでも使われている用語
プログラムにおけるインデックスとは、配列の要素を指定するための通し番号のことを指す。らしい。
簡単に言ってしまおう。プログラムにおけるインデックス

sushi[3]

こ の 3 ↑
の部分だ。
これは配列でどの要素を指しているかという数字だがこれがインデックス。

一般的な社会的認識でのインデックスは「見出し」という意味であり、しかし。または「欲しい情報を探しやすくする仕組み」らしい

自分にわかるように言えば

SQL文においてのORDER BYとか、並びなおし的な、これもインデックスとか言うのかな。



こっから便利そうなのだけ抽出してここに記述してみる。
〇Randomクラス
min/maxを指定してランダムな値を作成するのが
★Random.Rangeメソッド。

Random.Range(0,20); 0-20範囲で乱数を生成
Random.Range(3.0f, 5.0f); でも使用できる。

劣化版としてRandom.valueを使うと0.0から1.0の乱数を生成する。
varrandomValue=Random.value;


半径1の円内でランダムに座標を取得するメソッドが
★Random.insideUnitCircleメソッド。
Vector2ストラクトに代入する事が出来る。

Random.insideUnitSphereメソッドは球体としてVector3ストラクトに代入できる形で取得する。


ランダムなQuaternion、つまり角度を取得できるのが
★Random.rotation


レイ・・・
これは見えない線を飛ばしてゲームオブジェクトとかを検知する事が出来るみたいな機能。

・・・これはまた今度まとめることにしよう。なんか難しいそうだ。


・・・。埒が明かないので今回はとりあえずここまでにしておく。

この記事へのコメント