[편집기 확장] 설정을 변경한 Prefab 복사

7824 단어 Unity
Prefab의 일부 설정만 변경하여 대량으로 생성되는 경우는 드물다
한 명씩 복사하면서 손으로 설정하기 어려우니까 스크립트 쓰면서 단숨에 끝내자
샘플에서 템플릿 Prefab에 추가된 스크립트Hoge에 정의된 변수 값이 팝업되고 많은 Prefab가 복사됩니다.

견본


HP가 설정할 수 있는 웹 페이지 미리 정의
Hoge.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Hoge : MonoBehaviour
{
    public int hp;
}
추가Hoge된 PrefabTemplate라는 이름으로 Assets 바로 아래
hp 다양한 Prefab를 무작위로 설정하면서 만들 수 있는 편집기 확장
HogeGenerator.cs
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEditor;

public class HogeGenerator
{
    //Assets直下にTemplateがあるという想定
    static string TEMPLATE_PATH = "Assets/Template.prefab";

    [MenuItem("Hoge/ホゲを生成")]
    public static void Generate()
    {
        var template = AssetDatabase.LoadAssetAtPath(TEMPLATE_PATH, typeof(GameObject)) as GameObject;
        for(int i = 1; i <= 5; i++) { //とりあえず5回回してみる
            var prefabPath = $"Assets/Hoge{i}.prefab"; //.net4.6の書き方です
            var prefab = PrefabUtility.CreatePrefab(prefabPath, template); //複製
            //以下に"prefab"に対して行いたい変更を記述して下さい
            prefab.GetComponent<Hoge>().hp = Random.Range(10, 100);

            EditorUtility.SetDirty(prefab);
        }
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
    }
}
Hoge > ホゲを生成를 실행하면 각각 Hp를 무작위로 설정하는 Hge 1~5가 생성됩니다.

평이한 해설

var template = AssetDatabase.LoadAssetAtPath(TEMPLATE_PATH, typeof(GameObject)) as GameObject;
AssetDatabase.LoadAssetAtPath 함수 명칭과 같이 자산을 읽는 함수이다
샘플은PrefabGameObject의 형식으로 읽거나 Texture2D로 무늬를 읽을 수 있습니다
var prefabPath = $"Assets/Hoge{i}.prefab"; //.net4.6の書き方です
var prefab = PrefabUtility.CreatePrefab(prefabPath, template); //複製
복사된 Prefab의 이름을 포함하여 prefabPath에 경로를 설명합니다.PrefabUtility.CreatePrefab 방금 읽은 Prefabtemplate 생성
//以下に"prefab"に対して行いたい変更を記述して下さい
prefab.GetComponent<Hoge>().hp = Random.Range(10, 100);
prefab에서는 복사된 Prefab이 GameObject型에 저장되므로 원하는 대로 설정할 수 있습니다.
    EditorUtility.SetDirty(prefab);
}
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
자세한 내용은 할애, 무술
이상의 사용방법 이외에 자원을 교체하거나 소재를 복제하여 색을 변경한 후 응용할 수 있다.많은 일을 할 수 있으니 우리 함께 효율을 높이자!
사용자 친화적 표시 가능 ProgressBar

좋은 웹페이지 즐겨찾기