일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 최단거리 알고리즘
- 최소신장트리 mst
- raycast
- dropdown
- articulation body
- C#
- 유니티
- unity sparkmain(clone)
- 트리구조
- BFS
- navisworks api
- 드롭다운
- Simulation
- list clear
- 유니티 sparkmain(clone)
- 디지털트윈
- 행동트리
- dfs
- sparkmain(clone) 무한생성
- unity korea
- 티스토리챌린지
- 크루스칼
- 깊이탐색
- Unity
- 너비탐색
- 오블완
- GetComponent
- removeAll
- sparkmain(clone)
- readonly
- Today
- Total
낑깡의 게임 프로그래밍 도전기
Unity C# : 런타임에서 생성된 오브젝트 프리팹으로 만들기(런타임 프리팹 추가) *에디터용 본문
오늘은 런타임에서 동적으로 프리팹을 만들 수 있는 키워드이다. 하지만 에디터용이라 빌드 시에는 작동하지 않는다
1. public static Object CreateEmptyPrefab(string path) 커스텀 메서드:
이 메서드는 사용자가 정의한 방식으로 프리팹을 생성하는 메서드
직접 구현해야 하는 메서드로, Unity의 기본 제공 함수와는 다르게 사용자의 요구에 맞게 커스터마이징 가능
Object 타입을 반환할 수 있는데, 이는 Unity의 모든 타입을 포함할 수 있다.
2. PrefabUtility.SaveAsPrefabAsset를 사용하는 방법:
이 메서드는 Unity 에디터에서 제공하는 기본 제공 함수로, 오브젝트를 프리팹으로 저장하는 표준화된 방법
사용법
using UnityEditor;
public GameObject objectToSaveAsPrefab; // Prefab으로 저장할 오브젝트
string localPath = "Assets/MyPrefab.prefab";
PrefabUtility.SaveAsPrefabAsset(objectToSaveAsPrefab, localPath);
SaveAsPrefabAsset 메서드는 특정 경로에 지정된 게임 오브젝트를 프리팹으로 저장
Unity에서 공식적으로 제공하는 방법으로, 안정적이고 에디터와의 호환성이 좋음
차이점 요약
- 구현의 복잡성:
- CreateEmptyPrefab: 사용자 정의 메서드로, 직접 구현해야 하며 유연성이 높음.
- SaveAsPrefabAsset: Unity의 기본 제공 메서드로, 간편하게 사용 가능.
- 안정성 및 유지보수:
- CreateEmptyPrefab: 사용자 정의에 따라 다르지만, 유지보수가 복잡할 수 있음.
- SaveAsPrefabAsset: Unity의 표준화된 방법으로, 안정적이고 유지보수가 용이함.
- 호환성:
- CreateEmptyPrefab: 커스터마이징이 가능하지만, Unity 업데이트에 따라 호환성 문제가 발생할 수 있음.
- SaveAsPrefabAsset: Unity의 에디터 환경과 완벽히 호환됨.
어떤 방법이 더 적절한가?
대부분의 경우, PrefabUtility.SaveAsPrefabAsset를 사용하는 것이 더 적절. 이 메서드는 Unity에서 공식적으로 제공하는 기능으로, 안정적이고 사용하기 쉽다. 특히, Unity 에디터와의 호환성 측면에서 장점이 많다.
단, 특수한 요구 사항이나 추가적인 커스터마이징이 필요한 경우 CreateEmptyPrefab과 같은 사용자 정의 메서드를 작성하여 사용하는 것이 더 좋을 수 있다. 하지만 이러한 경우에도 가능하면 Unity의 기본 제공 기능을 활용하는 것이 유지보수와 호환성 측면에서 더 나을 수 있다.
아래는 Unity Documentation 참조!
https://docs.unity3d.com/ScriptReference/PrefabUtility.CreateEmptyPrefab.html
Unity - Scripting API: PrefabUtility.CreateEmptyPrefab
Obsolete The concept of creating a completely empty Prefab has been discontinued. You can however use SaveAsPrefabAsset with an empty GameObject. Declaration public static Object CreateEmptyPrefab(string path);
docs.unity3d.com
https://docs.unity3d.com/ScriptReference/PrefabUtility.SaveAsPrefabAsset.html
Unity - Scripting API: PrefabUtility.SaveAsPrefabAsset
In case some of the children are Prefab instances they will automatically become nested inside the new Prefab Asset. The input object must be a plain GameObject or the outermost root of a Prefab Instance. It cannot be a child inside a Prefab instance. If t
docs.unity3d.com