layer_get_fx 함수 설명
layer_get_fx 함수는 특정 레이어의 FX 구조체를 가져오는 데 사용됩니다. 이 함수는 타겟으로 삼고자 하는 레이어의 ID 또는 이름을 지정하면, 해당 레이어에 적용된 효과에 대한 정보를 포함하는 구조체를 반환합니다. 반환되는 구조체는 fx_create() 함수에서 얻는 구조체와 유사하며, fx_get_parameter 및 fx_set_parameter 함수를 사용하여 해당 구조체의 매개변수를 읽거나 수정할 수 있습니다. 만약 지정한 레이어에 필터나 효과가 적용되어 있지 않다면, 함수는 -1을 반환합니다.
문법
layer_get_fx(layer_name_or_id);
인자 설명
| 인자 | 타입 | 설명 |
|---|---|---|
| layer_name_or_id | String or Layer ID | 읽고자 하는 레이어의 이름 또는 ID |
반환 값
- FX 구조체 (또는 찾을 수 없는 경우 -1)
예제 코드
var layers = layer_get_all();
for(var i = 0; i < array_length(layers); i++){
var layer_fx = layer_get_fx(layers[i]);
if (layer_fx != -1){
if (fx_get_name(layer_fx) == "_filter_tintfilter"){
fx_set_parameter(layer_fx, "g_TintCol", [0, 0, 1, 1]);
}
}
}
위의 코드는 현재 방에 있는 모든 레이어를 반복하면서 각 레이어에 FX 구조체가 있는지 확인합니다. 만약 레이어에 FX 구조체가 있다면, fx_get_name() 함수를 호출하여 해당 필터/효과의 이름을 확인합니다. 만약 이름이 "_filter_tintfilter"라면, 즉 "색상 틴트" 필터라면, 틴트 색상을 파란색으로 변경합니다.
활용 예제
1. 레이어의 모든 효과 제거하기
var layers = layer_get_all();
for(var i = 0; i < array_length(layers); i++){
var layer_fx = layer_get_fx(layers[i]);
if (layer_fx != -1){
layer_clear_fx(layers[i]);
}
}
2. 특정 레이어의 효과 이름 변경하기
var layer_id = "myLayer";
var layer_fx = layer_get_fx(layer_id);
if (layer_fx != -1){
fx_set_name(layer_fx, "NewEffectName");
}
3. 효과의 특정 매개변수 값 읽기
var layer_id = "myLayer";
var layer_fx = layer_get_fx(layer_id);
if (layer_fx != -1){
var tint_color = fx_get_parameter(layer_fx, "g_TintCol");
}
4. 모든 레이어에 동일한 효과 적용하기
var layers = layer_get_all();
for(var i = 0; i < array_length(layers); i++){
var layer_fx = fx_create("_filter_tintfilter");
layer_set_fx(layers[i], layer_fx);
fx_set_parameter(layer_fx, "g_TintCol", [1, 0, 0, 1]); // 빨간색으로 설정
}
이와 같이 layer_get_fx 함수를 활용하여 다양한 효과를 레이어에 적용하거나 수정할 수 있습니다.