タグ別アーカイブ: Unity

C#のコードからメッシュを生成するチュートリアル

Polygon from s2kw on Vimeo.

  • コードからポリゴンを生成するチュートリアル。
  • 大まかな流れは以下のとおり
    • Mesh オブジェクトの生成
    • Mesh オブジェクトに頂点情報を渡す
    • Mesh オブジェクトの頂点情報に合わせた三角ポリゴン情報を渡す (この時点で画面には描画される)
    • Mesh オブジェクトにUV情報を渡す
    • Mesh オブジェクトにtangent情報を渡す
  • 書いたコード
  • チュートリアル
  • Unity::Reference::Mesh

続きを読む

CharacterControllerのMoveの1とSimpleMoveの1

nityでのオブジェクトの 移動 方法は三種類あって、必要なコンポーネントも予め用意されている。

  • CharacterController の SimpleMove() を叩く
  • CharacterController の Move() を叩く
  • Rigidbody の velocity の値を変更する

SimpleMoveとMove、velocityもVector3型のパラメータを必要とする。

なので controller.Move( this.transform.forward * this.speed )のように記述することがある。この時の引数として渡す値の Vector3 の magnitude の値の単位は何なのか、ということが気になって夜も眠れないので確認してみた。

確認するために適用した各GameObjectの構成は以下の通り。

続きを読む

SerializeFieldのデフォルトはnullであってnullでない

Unityのエディタ上でAssetを選択するとInspector上にD&Dで設定できるObjectFieldがある。
publicに指定したり、SerializeFieldなどのAttributeを記述するとInspector上に出現し、指定の型に合ったAssetの参照を関連付けすることができるおなじみの仕組み。

ここに何も指定していなかった場合の対応策として null合体演算子 という条件演算子がある。
これで判定して対応しようとすると上手く動かない。

続きを読む

[Unity3d]インスペクタ上にはあるのにスクリプトからでは見つからないプロパティにアクセスする

きっかけ

Trailの色をスクリプトから変更できないか探していたところ、StackOverFlowに以下の様な質問が。

Trail Renderer Colors [C#]

I am creating a Trail Renderer that is modified in script (width, life, material, etc.) I was wondering if there is a way to change the colors array in script as well.

I’ve tried getting the game objects “colors” variable but it says that does not exist even though it is in blue.

This is what I tried:

回答として

The colors array isn’t accessible from the script API, unfortunately.

とあったりするので諦めかけつつスクロールさせると…

続きを読む

[Unity3D][github]Unity3D + github の環境設定

Unityのプロジェクトをgithubで管理する際の必要な情報とお勧めについて。

github側

まずはリポジトリを作成する。
その際にgithubの Add .gitignore: ボタンから、プロジェクトなのかを選択することができるのでUnityを選ぶ。

gitignore

gitのバージョン管理の対象にしたくないもの、除外したいものをディレクトリ単位または、ファイル単位、もしくはファイルの名前の一部を含むもので指定できる。

先のgithubの設定で出来上がった .gitignore ファイルは以下のようになっている。

続きを読む

[Unity3D][NGUI]Atlasをスクリプトで読み込む

NGUIは複数のスプライトのテクスチャを1つのアトラスにまとめて管理する便利な機能がついてる。
ただ、スクリプトで生成したUISprite付きGameObjectにSpriteを割り当てるには先にUIAtlasを渡さなければならない。

スクリプトでどうやるのかしらべたところ、AtlasをInstantiateしてるサンプルを見つけた。
NGUIをスクリプトのみで構築したいので調べてみた

しかしこれだとScene上にPrefab(Clone)た配置されてしまうし、読む都度Cloneが生成されて美しくない。
そのうえ、 Instantiate した PrefabDestroy するとせっかく読んだ Sprite は参照が missing で表示されなくなる。

というわけで色々試した結果、以下のスクリプトで対応できた。

続きを読む

[Unity3D]Instantiate と Awake とか Startが流れるタイミングを把握する

Instantiateされた時にprefabの各GameObject内のAwakeとかStartのタイミングを知っておきたかったので調べた。

  • 親子関係によるAwakeやStartの流れが不明だったので簡単なスクリプトを作成した。
  • スクリプトの主旨としては、出現時にどの状態で出現するのかを理解できるものに、ということで作成した。

プレファブの構造は次の様にした。
続きを読む

[Unity3D][NGUI]ボタンの作り方最小構成

環境

  • Unity3D : 4.5.1f3
  • NGUI : 3.7.4

やること

  • ボタン用のGameObjectを作る … A
  • AにButtonとUILabelかUISpriteをアタッチする
  • AにBoxColliderをアタッチする
  • ボタンを押した時用のスクリプトを書く … B
  • BをAにアタッチする。
  • AにアタッチしたButtonのイベント
  • 実はBはAにアタッチしなくても良い。

続きを読む