未来を創る、テックコミュニティー

代表技術通信~Unityのことをちゃんと勉強する⑥ Unity用にC#勉強(4)

草場代表
2020/10/02

こんばんは。代表の草場です。

Scriptがアタッチできない問題が全く解決せず、一日が過ぎていきました。。

No MonoBehaviour script in the file, or their names do not match the file name.

で検索すると様々出てきますが、Yahoo知恵袋のこちらの質問であるように、

Edit>Preferences>External Tools>External script editorの設定をMonoBehaviour(MonoDevelopでは?)に変えると出来ますよ

で行けると思いきや、External script editorにMonoDevelopなし。ダウンロードして割り当ててみるも出来ず。。なぜだ。おとといはできたのに。一度アンインストールするか。。

どうしようもないので、ほかの勉強。「UnityのWebGLで点群を表示してみる」のスクリプトに、Vector3が出てきました。公式に詳しいです。

説明

3D ベクトルと位置の表現この構造体は Unity 全体の 3D での位置や方向のために使用されています。 一般的なベクトル演算を行うための関数が含まれています。下記のリストにある機能は、他のクラスでベクトルや位置を操作するために使用することができます。 例えば、Quaternion と Matrix4x4 クラスでは、回転したり、ベクトルと位置の変換をするのに便利です。

位置がいじれるということですね。
あとはRequireComponent。「[Unity初心者Tips]確実に!必要なComponentを入れるRequire ComponentとReset()」に詳しいです。
[serialize]。うーん、わからん。Microsftの公式に詳しいです。

シリアル化は、オブジェクトを格納するか、メモリ、データベース、またはファイルに転送するためにバイト ストリームに変換するプロセスです。 その主な目的は、必要なときに再作成できるように、オブジェクトの状態を保存しておくことです。 逆のプロセスは、逆シリアル化と呼ばれます。

[Serializable]
public class MyObject {
public int n1 = 0;
public int n2 = 0;
public String str = null;
}

うむ。[]で宣言する感じですね。このクラスのインスタンスをファイルにシリアル化する方法が以下。

MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();

うーんなんとなく。

早くUnity動くようにしないと。。

点群の扱いに関しては、「Rendering Large Point Clouds in Unity」にうまくまとまっています。また、Azure Kinectも面白そう。やりたいことばかり。

 

この記事を書いた人
草場代表
エディター