Skip to content

Instantly share code, notes, and snippets.

@asus4
Created February 29, 2012 13:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asus4/1940935 to your computer and use it in GitHub Desktop.
Save asus4/1940935 to your computer and use it in GitHub Desktop.
make a plane from 2^x size image, ***need EzGUI***
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