[UE4]Unreal Python 런타임에 임의의 인수를 변수로 전달

Unreal Python을 실행할 때 상황에 따라 Python 스크립트의 변수를 변경하고 싶을 수도 있습니다.
예를 들어 액터를 10개 스폰시키는 스크립트가 있다고 해서 8개로 하거나 20개로 하거나 조정하고 싶을 때 매번 스크립트를 다시 쓰는 것은 똑똑하지 않습니다.
그런 경우에는 argv를 사용합니다.

argv



sys 라이브러리의 함수.
런타임에 인수를 추가하여 변수로 얻을 수 있습니다.

qiita.py
import sys
print(sys.argv[1])

예를 들어, 다음과 같은 스크립트를 만들어 보았습니다.

선택 액터의 라이트맵 해상도 조정



※numpy 라이브러리의 설치가 필요합니다.
외부 라이브러리 설치에 대해서는 다음 문서를 참조하십시오.
htps : // 코 m/에 GJ-히로유키_코바야시/있어 ms/1f8472 아77에 322704d603

qiita.py
import unreal
import sys
import numpy as np

#選択したアクタを取得
selected_actors = unreal.EditorLevelLibrary.get_selected_level_actors()
selected_static_mesh_actors = unreal.EditorFilterLibrary.by_class(selected_actors,unreal.StaticMeshActor.static_class())

static_meshes = np.array([])

#配列のユニーク化
for sma in selected_static_mesh_actors:
    smc = sma.static_mesh_component
    sm = smc.static_mesh
    static_meshes = np.append(static_meshes,sm)

static_meshes = np.unique(static_meshes)

#引数から値を取得
offset = float(sys.argv[1])

for sm in static_meshes:
    #現在のライトマップ解像度を取得
    current_resolution = sm.get_editor_property("light_map_resolution")
    #新しいライトマップ解像度を設定
    log = unreal.MathLibrary.log(current_resolution,2)
    new_resolution = unreal.MathLibrary.multiply_multiply_float_float(2,log + offset)
    sm.set_editor_property('light_map_resolution',new_resolution)


라이트맵 해상도를 1단계 올리고 싶을 때는 인수에 1을 붙인다. (256 → 512 등)
1단계 낮추고 싶은 경우는 인수에 -1을 붙인다. (512 → 256)

이런 느낌으로 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기