Created
February 29, 2012 13:43
-
-
Save asus4/1940935 to your computer and use it in GitHub Desktop.
make a plane from 2^x size image, ***need EzGUI***
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEngine; | |
using System.Collections; | |
// ///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
// | |
// ゲームオブジェクトのユーティリティ | |
// | |
// ///////////////////////////////////////////////////////////////////////////////////////////////////////// | |
public class GameObjectUtil { | |
/// <summary> | |
/// 注) SpriteManager2を入れないとエラーが出ます | |
/// ResourcesのパスからSpriteを自動生成していかえす. | |
/// 画像は、2のx乗にトリムされるので、注意。 素材は、2^xの単位で用意。 | |
/// </summary> | |
/// <param name="path">リソース内の"画像"パス</param> | |
/// <param name="pos">配置位置</param> | |
/// <param name="parent">親のTransform</param> | |
/// <returns></returns> | |
static public GameObject InstantiateSpriteFromPath(string path, Vector3 pos, Transform parent) { | |
Texture2D tex = Resources.Load(path) as Texture2D; | |
if(!tex) return null; | |
tex.name = path; | |
return InstantiateSpriteFromTexture(tex,pos,parent); | |
} | |
/// <summary> | |
/// 注) SpriteManager2を入れないとエラーが出ます | |
/// ResourcesのパスからSpriteを自動生成していかえす. | |
/// さらにレイヤー指定可能。 | |
/// </summary> | |
/// <param name="path">リソース内の"画像"パス</param> | |
/// <param name="pos">配置位置</param> | |
/// <param name="parent">親のTransform</param> | |
/// <param name="layerName">レイヤー名</param> | |
/// <returns></returns> | |
static public GameObject InstantiateSpriteFromPath(string path, Vector3 pos, Transform parent, string layerName) { | |
Texture2D tex = Resources.Load(path) as Texture2D; | |
if(!tex) return null; | |
tex.name = path; | |
GameObject go = InstantiateSpriteFromTexture(tex,pos,parent); | |
int layer = LayerMask.NameToLayer(layerName); | |
go.layer = layer; | |
return go; | |
} | |
/// <summary> | |
/// Texture2Dの参照から、Spriteを生成して返す。 注)SpriteManager2を入れないとエラーが出ます | |
/// </summary> | |
/// <param name=""></param> | |
/// <returns></returns> | |
static public GameObject InstantiateSpriteFromTexture(Texture2D texture, Vector3 pos, Transform parent) { | |
// make GameObject | |
GameObject spriteObj = new GameObject(); | |
spriteObj.name = texture.name; | |
spriteObj.transform.parent = parent; | |
spriteObj.transform.localPosition = pos; | |
// makeMat | |
Shader s = Shader.Find("Sprite/Vertex Colored, Fast"); | |
Material mat = new Material(s); | |
mat.mainTexture = texture; | |
int width = texture.width; | |
int height = texture.height; | |
SimpleSprite sprite = spriteObj.AddComponent<SimpleSprite>(); | |
// TODO width/4は、今回のカメラズームサイズに合わせている。カメラのズームサイズで動的にサイズを変えられるようにすべし. | |
sprite.Setup(width/4, height/4, new Vector2(0,height), new Vector2(width,height), mat); | |
// MeshRenderer setting | |
MeshRenderer meshRenderer = spriteObj.GetComponent<MeshRenderer>(); | |
meshRenderer.castShadows = false; | |
meshRenderer.receiveShadows = false; | |
return spriteObj; | |
} | |
/// <summary> | |
/// Texture2Dから、Spriteを生成して返す。レイヤー指定版 | |
/// </summary> | |
/// <param name=""></param> | |
/// <returns></returns> | |
static public GameObject InstantiateSpriteFromTexture(Texture2D texture, Vector3 pos, Transform parent, string layerName) { | |
GameObject go = InstantiateSpriteFromTexture(texture,pos,parent); | |
int layer = LayerMask.NameToLayer(layerName); | |
go.layer = layer; | |
return go; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment