UnityのGameObjectのPlaneはポリゴン数が多く、GUIのボタンや2Dスプライトとして使うには若干オーバースペックです。
エディタを拡張してメニューからシンプルな平面(三角ポリゴン2枚で構成)を作成できるようにしてみました。
エディタの拡張用のコードはEditorフォルダに格納する必要があります。
CreateSimplePlaneフォルダ下、Editorフォルダに以下のスクリプト(CreateSimplePlane.cs)を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using UnityEngine; using UnityEditor; using System.Collections; public class CreateSimplePlane : MonoBehaviour { [MenuItem("MyTools/Create Simple Plane")] static void Create() { GameObject obj = new GameObject("SimplePlane"); MeshFilter meshFilter = obj.AddComponent<MeshFilter>(); MeshRenderer meshRenderer = obj.AddComponent<MeshRenderer>(); Mesh m = (Mesh)AssetDatabase.LoadAssetAtPath("Assets/SimplePlane.asset", typeof(Mesh)); if(m == null) { m = new Mesh(); m.name = "SimplePlane"; Vector3[] vertices = new Vector3[] { new Vector3( 0.5f, 0.5f, 0.0f), new Vector3(-0.5f, -0.5f, 0.0f), new Vector3(-0.5f, 0.5f, 0.0f), new Vector3( 0.5f, -0.5f, 0.0f) }; int[] triangles = new int[] { 0, 1, 2, 3, 1, 0 }; Vector2[] uv = new Vector2[] { new Vector2(1.0f, 1.0f), new Vector2(0.0f, 0.0f), new Vector2(0.0f, 1.0f), new Vector2(1.0f, 0.0f) }; m.vertices = vertices; m.triangles = triangles; m.uv = uv; m.RecalculateNormals(); AssetDatabase.CreateAsset(m, "Assets/SimplePlane.asset"); AssetDatabase.SaveAssets(); } meshFilter.sharedMesh = m; m.RecalculateBounds(); } } |
7行目:追加先メニューを指定します。
10行目:空のゲームオブジェクト(SimplePlane)を作成します。Hierarchyに追加されます。
11行目:MeshFilterコンポーネントをSimplePlaneに追加
12行目:MeshRendererコンポーネントをSimplePlaneに追加
13行目:Assetsから作成済みのメッシュを読み込みます。
14行目:作成済みのメッシュが見当たらなければ作成
16行目:メッシュ作成
17行目:メッシュの名前を設定
18-24行目:頂点情報を作成
25-29行目:三角ポリゴンの構成を指定
30-36行目:頂点に対応するUVを設定
37-40行目:メッシュへ各値を設定し、ポリノーマルを計算させる。
42-43行目:作成したメッシュをAssetsに保存する。
45-46行目:ゲームオブジェクトのメッシュへ設定し、バウンディングボックス更新。
スクリプトに問題がなければ、Unityのメニューに「MyTools – Create Simple Plane」が追加されます。
本スクリプトで複数のオブジェクト(SimplePlane)を作成することができますが、メッシュ(SimplePlane)は1つしか作成しません。それぞれ別のメッシュとしたい場合(UVをそれぞれに設定したい場合など)は、メッシュを複製して割り当て直す必要があります。
参考:
CreatePlane – Unity Community Wiki : http://wiki.unity3d.com/index.php?title=CreatePlane
コメントを残す
コメントを投稿するにはログインしてください。