単純にメソッドにしたい場合……そのまま書けばいいだけだと思いますが。
(メソッド名は数字から開始にできないので変更してます)
C#
1public static GameObject hoge_image;
2
3void Init2D (string parentName, string imageName) {
4 hoge_image.transform.parent = GameObject.Find(parentName).transform;
5 hoge_image.AddComponent<RectTransform>().anchoredPosition = new Vector3(0, 0, 0);
6 hoge_image.GetComponent<RectTransform>().localScale = new Vector3(1, 1, 1);
7 hoge_image.AddComponent<Image>().sprite = Resources.Load<Sprite>(imageName);
8 hoge_image.GetComponent<Image>().preserveAspect = true;
9}
10
11//呼び出し側
12void Hoge () {
13 hoge_image = GameObject.Find("hoge_image"); //ここは適当(何かしらの方法でセットされていると想定する)
14 Init2D("Panel", "image"); //hoge_imageはstaticなので渡す必要は無い
15}
もしかして「imageがセットされたパネルをたくさん作りたい」ということであれば、プレハブを持つのが簡単かと思います。
Imageオブジェクト作成→インスペクタから各種コンポーネントの設定→オブジェクトをプレハブ化
しておいた上で以下のスクリプトを、実行する側のオブジェクトに付けます。
C#
1public GameObject imagePrehab; //インスペクタからプレハブをセットしておく
2
3void Init2D (string objName, string parentName, string imageName) {
4 GameObject obj = Instantiate(imagePrehab, GameObject.Find(parentName).transform); //親子関係セットされる
5 obj.GetComponent<Image>().sprite = Resources.Load<Sprite>(imageName);
6}
7
8//呼び出し側
9void Hoge () {
10 Init2D("hoge_image", "Panel", "image");
11}
12
※public static GameObject hoge_image;
にする意図がよく分からなかったので無視しています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/07 05:36