メッシュとテクスチャの作成コメントを残す前回はタイム表示をしたので、次は目盛りのラインなどを描画したいと思う訳ですが、Unityで描画をするにはまずなによりメッシュが必要になります。Unityのプロジェクトを作った段階では、CubeやらSphereなどの3D用のものが数種類と、無駄に細かいメッシュのPlaneしか作れません。BigStopWatchのラインひとつひとつを標準のPlaneで置いていくのはちょっと無駄な感じです。BigStopWatchではきれいなラインを引くために、テクスチャにラインを描画して少しマージンを付けたものをメッシュに割り当てて描画しています。メッシュを単純に塗りつぶすとメッシュのエッジ部分がガタガタになってしまいます。そのテクスチャも作りたいのですが、Unityのメニューのどこを見渡してもテクスチャを作成するような項目は見つかりません。なければ自分で作ってしまえるというのもUnityの良い所です。今回はエディタ拡張をちょっとだけ使ってメッシュとテクスチャを作れるようにしたいと思います。メッシュとテクスチャをスクリプトで作るProjectウィンドウ内のメニューから「Create/Folder」を選択して「Editor」というフォルダを作成します。このフォルダ名は重要です。以後作っていくフォルダ名は適当で良いですが、これはちゃんと「Editor」としてください。「CreateTexture.cs」という3つのC#スクリプトを作成してください。それぞれのスクリプトは以下になります。}}これらのコードを追加する事でメニューの「Assets/Create/」の中に新たにメニュー項目が追加されます。Mesh」を選択すれば空のメッシュが作成でき、「Texture...」を選択すればサイズを指定してテクスチャが作成できるようになります。UnityEditor」という宣言が追加されています。この名前空間にはエディタとしての機能を利用できるクラス、例えば今回だとAssetDatabaseというプロジェクトウィンドウ内のアセットにアクセスできるクラスなどがあります。UnityEditorの名前空間を使うスクリプトは「Editor」フォルダに入れておかないといけないようです。言っても、エディター上で実行しているだけなら「Editor」フォルダに入れていなくても問題なく使えてしまいます。ビルドするときにはエラーが出てしまうので、何かの理由でEditorフォルダに入れたくないということがあるようでしたら、以下のページに解決法が書いてありましたので、参考にすると良いと思います。("〜")]」という一行です。これによってメニューに項目が追加され、このあとに記述されたメソッドがメニューを選択すると実行されます。ちなみに、「Asset/Create/」というメニューのパスで指定されたものは、画面上のメニューのAssetsに表示されるだけでなく、ProjectウィンドウのCreateメニューにも表示されます。「BSWEditorUtility」はメッシュとテクスチャの両方共通の処理があったので作りました。GetSelectedDirectoryPath()というのがそれで、Projectウィンドウで選択されているフォルダを取得するものです。Selectionクラスで選択されているフォルダorファイルが取得できるので、選択されていればその階層のフォルダを返し、選択されていない場合は最上位階層の「Assets」を返すようにしています。「CreateEmptyMesh」と「CreateTexture」は、それぞれ新たにメッシュやテクスチャを作成してアセットとして保存するということをやっています。Mesh()」とするだけではいずれどこかに消えてなくなりますが、AssetDatabase.CreateAsset()でアセットとして保存して残せます。次回は実際にメッシュの中身を作成します。コメントをキャンセルメールアドレスが公開されることはありません。