에디터에서 리소스를 만지작 거리는 와중에 귀차니즘이 스멀스멀 올라왔다.
본격적으로 파이썬을 다뤄본적 없었지만, 파이썬 플러그인을 사용하면 에디터용 함수를 만들 수 있다고 하여 찾아보았다.
Unreal Python 설정
1. 플러그인 설치
Scripting 항목에 보이는 세 개의 플러그인을 설치 후 재시작.
2. 플러그인 환경설정
기본적으로 Contents/Python 폴더에 배치하는 경우는 적을 필요 없지만, 프로젝트 외부에 존재하는 파일의 경우 환경변수를 설정해준다.
설정 창 위치: ProjectSetting - Plugin - Python
3. unreal.py 준비
에디터 출력 로그 창의 입력 탭을 변경해주고(Cmd -> Python), 언리얼 명령 모듈을 불러온다.
그러면 unreal.py 파일을 볼 수 있다. 프로젝트\Intermediate\PythonStub 경로에 있다.
4. Hello World(You, Unreal, Space... ETC)
프로젝트 외부에 .py 파일을 만들고 잘 연동되었는지 확인해본다.
아래는 인사 후, 준비되어 있는 리소스들을 프로젝트에 추가하는 코드다.
좀 전에 만들어진 unreal.py 파일을 잘 불러왔는지 확인하자. 해당 파일이 없으면 인사만 보일테니..
4-1. .py 파일 준비
#main.py
import unreal
# 테스트에 사용할 이미지, 또는 오디오 등 기타 파일 경로
texture_jpg = 'C:/Users/HARIM/Pictures/selfiesample.JPG'
texture_tga = 'C:/Users/HARIM/Pictures/selfiesample2.TGA'
def importMyAssets():
texture_task1 = buildImportTask(texture_jpg, '/Game/Textures')
texture_task2 = buildImportTask(texture_tga, '/Game/Textures')
executeImportTasks([texture_task1, texture_task2])
def buildImportTask(filename, destination_path):
task = unreal.AssetImportTask()
task.set_editor_property('automated', True)
task.set_editor_property('destination_name', 'Test')
task.set_editor_property('destination_path', destination_path)
task.set_editor_property('filename', filename)
task.set_editor_property('replace_existing', False)
task.set_editor_property('save', False)
return task
def executeImportTasks(tasks):
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks(tasks)
if __name__ == '__main__':
print('Hello my love')
4-2. 준비된 main.py 파일이 준비되었다면 언리얼 에디터를 다시 시작한다.
4-3. importMyAssets 명령으로 준비된 이미지도 잘 불러오는지 확인해본다.
import main as m
m.importMyAssets()
5. 파일 새로고침
importMyAssets 명령이 끝났는지 로그도 추가해보겠다.
그런데 다시 importMyAssets 명령을 내려줘도 완료 메시지가 안 보일 것이다.
.py 파일을 수정했으면 에디터를 닫았다가 다시 열어보자. 그리고 importMyAssets 명령을 내려주면,
자, 드디어 원하던 로그가 찍혔다.
그런데, 스크립트를 수정하고 확인을 위해 매번 에디터를 다시 시작하다니, 이 또한 매우 귀찮지 아니한가?
나만 그래?
당연히 아니었다. 포럼에 같은 질문을 남긴 사람이 있었고, 친절한 답변이 바로 붙어있었다.
import main as m
from importlib import *
reload(m)
m.importMyAssets()
리로드를 거치는 2 줄의 명령어만 적어주면 에디터는 재시작할 필요가 없었다.
이제 파이썬으로 무슨짓을 하는지 다른 영상도 더 지켜보자.
UE4 python tutorial
https://www.youtube.com/watch?v=M9UlyVtD5Dk&list=PLBLmKCAjA25Br8cOVzUroqi_Nwipg-IdP&index=3
공식문서에 자동완성 기능을 위한 설명도 있는데, 개인적으로 반응 없었다.
파일 새로고침 참고
https://forums.unrealengine.com/t/must-restart-the-editor-to-use-updated-python-code/125847/3
추가 예제
https://www.youtube.com/watch?v=YpHJ-P-4C5I&list=PLTfMG1EpxB2ewNOlE1vFNqIGqPzgkqVk6&index=2
'GameDevelopmentDiary > UnrealDiary' 카테고리의 다른 글
Test Selfie segmentation on unreal editor (0) | 2022.07.18 |
---|---|
Mobile AOS XR Study - Remote camera in PC (0) | 2022.06.08 |
Mobile AOS XR Study - Virtual camera in mobile (0) | 2022.06.07 |
언리얼4 립싱크(Text To Speech) 구현 방법 Part4 (완성) (1) | 2022.03.10 |
언리얼4 립싱크(Text To Speech) 구현 방법 Part3 (0) | 2022.03.10 |