1.概要
Unityではオブジェクトを作成するとき
エディタ上で作業をすることが多いと思います。
ですが、スクリプトから動的に作成する必要がある場面もあります。
ここではで動的に3Dオブジェクト(Quad)を作成し、
更にローカルパスから画像を選択し、それをテクスチャとして貼り付けています。
開発環境:Unity 2018.3.8f1 (64-bit)
開発言語:C#
2.準備する
まずは適当なプロジェクトを作成します。
作成したら【Hieraechy】を右クリックし
【Create Empty】で空のゲームオブジェクトを作ります。
【GameObject】が出来るのでこれに
【Inspector】から【New script】を追加します。
今回は【makeQuad】という名前で追加しました。
これで準備は完了です。
3.スクリプト
先程作成した【makeQuad】を下記のように変更します。
using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; public class makeQuad : MonoBehaviour { // Start is called before the first frame update void Start() { // ローカルパスから画像を読み込みbyte型へ変換 FileStream fs = new FileStream(@"C:\test\test.png", FileMode.Open); BinaryReader bin = new BinaryReader(fs); byte[] result = bin.ReadBytes((int)bin.BaseStream.Length); bin.Close(); // テクスチャを読み込み Texture2D tex = new Texture2D(1, 1); tex.LoadImage(result); // 3Dオブジェクトを作成しテクスチャ貼り付け GameObject tmpQuad = GameObject.CreatePrimitive(PrimitiveType.Quad); tmpQuad.transform.position = new Vector3(0, 0, 0); tmpQuad.transform.rotation = Quaternion.Euler(0, 0, 0); tmpQuad.transform.localScale = new Vector3(1, 1, 1); tmpQuad.GetComponent<Renderer>().material.mainTexture = tex; } // Update is called once per frame void Update() { } }
4.結果
結果は下図のとおりになりました。
Quadがスクリプトから生成されて
更にテクスチャを貼ることが出来ました。