본문 바로가기

내일배움캠프/[P5-Team.] Group3NotIncluded

[TIL24.05.18~20] 라이프사이클, Active, 파티클

.

 

목   차

     


    유용한 라이프사이클 함수들

    OnApplication~ 함수들은 Unity에서 제공하는 라이프사이클 메서드들이다. (다른 라이프사이클 메서드 예: Awake)

    퍼즈 버튼을 구현하려다 우연히 발견해서 자세히 알아보게 되었다.

    OnApplicatoinPause(bool pause)

    앱이 일시정지 상태에 들어갈 때와 다시 활성화될 때 호출된다. 

    yield가 사용이 가능하다. (yield: coroutine할 때 쓰던 그 키워드.)

     

    bool pause: true면 pause, false면 resume.

     

    주로 모바일 환경에서 사용된다.

    이 함수가 작동하는 것은 주로 화면의 백그라운드 전환 등이기에, 만약 사용자에게 전화가 오거나 하면 어플을 잠시 일시중지해야 하기 때문이다.

     

    일시정지 버튼을 통해 Pause하는 건 조금 다른 얘기로, 그건 직접 관련 이벤트 등으로 관리해야 한다...

    이 함수를 아직 직접적으로 활용하지는 않았지만, OnPauseEvent 메서드를 만들 때 이 함수의 작동방식을 참고했다.

     

    OnApplicationQuit

    게임종료 직전에 모든 스크립트에서 호출된다.

    여담으로, Applicatoin.Quit()을 통해 종료버튼의 기능을 구현할 수 있다.

    OnEnable, OnDisable

    SetActive(true)를 포함한다. Disable은 반대로 false.


    GameObject 속성

    ActiveSelf

    게임오브젝트의 SetActive 여부를 bool값으로 return해준다.


    Particle System Component

    feat.GPT. 정리할 시간은 없었다. 

     

    파티클의 크기를 조절하기 위해서는 파티클 시스템의 Start Size와 관련된 설정을 조정해야 합니다. Unity의 파티클 시스템에는 여러 가지 크기 관련 설정이 있으며, 이는 파티클이 생성될 때와 생애 주기 동안의 크기를 제어합니다.

    파티클 크기 조절
    Start Size:

    파티클이 생성될 때의 기본 크기를 설정합니다.
    Inspector 창에서 Start Size를 조정하여 기본 크기를 변경할 수 있습니다.
    Size over Lifetime:

    파티클의 생애 주기 동안 크기를 변경할 수 있습니다.
    Inspector 창에서 Size over Lifetime 모듈을 활성화하고 크기 변화를 설정할 수 있습니다.
    Size by Speed:

    파티클의 속도에 따라 크기를 변경할 수 있습니다.
    Inspector 창에서 Size by Speed 모듈을 활성화하고 설정을 조정할 수 있습니다.
    예제: Inspector에서 파티클 크기 조정
    파티클 시스템 선택:

    Hierarchy 창에서 파티클 시스템 오브젝트를 선택합니다.
    Start Size 설정:

    Inspector 창에서 Start Size 값을 조정합니다. 값이 클수록 파티클의 크기가 커집니다.
    예: Start Size 값을 1에서 0.1로 줄이면 파티클 크기가 작아집니다.
    Size over Lifetime 설정:

    Inspector 창에서 Size over Lifetime 모듈을 활성화합니다.
    크기 변화 곡선을 설정하여 파티클이 생성된 후 시간이 지남에 따라 크기가 어떻게 변하는지 정의합니다.
    파티클 크기 조정 예제
    1. 파티클 시스템 생성 및 설정
    파티클 시스템 추가:

    Hierarchy 창에서 Create -> Effects -> Particle System을 선택하여 새로운 파티클 시스템을 추가합니다.
    Inspector에서 설정:

    Inspector 창에서 파티클 시스템을 선택합니다.
    Start Size:

    Start Size 값을 1에서 0.1로 줄입니다.
    Size over Lifetime:

    Size over Lifetime 모듈을 활성화합니다.
    크기 변화 곡선을 설정하여 파티클의 크기가 시간이 지남에 따라 어떻게 변하는지 정의합니다.
    2. 코드로 파티클 크기 조정
    파티클 시스템의 크기를 코드로 조정할 수도 있습니다. 다음은 파티클 시스템의 Start Size와 Size over Lifetime을 코드로 설정하는 예제입니다.

    using UnityEngine;
    
    public class ParticleSizeController : MonoBehaviour
    {
        public ParticleSystem particleSystem;
        public float startSize = 0.1f;
        public AnimationCurve sizeOverLifetime = AnimationCurve.Linear(0f, 1f, 1f, 0f);
    
        private void Start()
        {
            if (particleSystem != null)
            {
                // Start Size 설정
                var main = particleSystem.main;
                main.startSize = startSize;
    
                // Size over Lifetime 설정
                var sizeOverLifetimeModule = particleSystem.sizeOverLifetime;
                sizeOverLifetimeModule.enabled = true;
                sizeOverLifetimeModule.size = new ParticleSystem.MinMaxCurve(1f, sizeOverLifetime);
            }
        }
    }


    ParticleSizeController:
    particleSystem을 받아 Start Size와 Size over Lifetime을 설정합니다.
    Start 메서드에서 파티클 시스템의 크기 관련 설정을 조정합니다.
    이 스크립트를 파티클 시스템이 있는 GameObject에 추가하고, particleSystem을 Inspector에서 설정하면 파티클 크기를 조정할 수 있습니다. Start Size 값을 조정하고, Size over Lifetime 모듈을 통해 파티클의 생애 주기 동안 크기 변화를 설정할 수 있습니다.

    particle system 컴포넌트 설명
    ChatGPT
    Unity의 Particle System 컴포넌트는 입자 기반의 효과(예: 연기, 불꽃, 눈, 비 등)를 생성하는 데 사용됩니다. 이 컴포넌트는 다양한 설정을 통해 입자의 생성, 모양, 움직임 등을 조정할 수 있습니다. 아래는 Particle System 컴포넌트의 주요 속성 및 모듈에 대한 설명입니다.

    주요 속성 및 모듈
    1. Main
    Duration: 파티클 시스템이 실행되는 시간(초)입니다.
    Looping: 활성화되면 파티클 시스템이 반복 실행됩니다.
    Prewarm: 활성화되면 시스템이 시작할 때 이미 파티클이 발사된 상태가 됩니다(Looping이 활성화된 경우에만 사용 가능).
    Start Delay: 파티클 시스템이 시작하기 전에 지연되는 시간입니다.
    Start Lifetime: 파티클의 생명주기(초)입니다.
    Start Speed: 파티클의 초기 속도입니다.
    Start Size: 파티클의 초기 크기입니다.
    Start Rotation: 파티클의 초기 회전각입니다.
    Start Color: 파티클의 초기 색상입니다.
    Gravity Modifier: 파티클에 적용되는 중력의 크기입니다.
    Simulation Space: 파티클 시스템의 시뮬레이션이 로컬 좌표계 또는 월드 좌표계에서 이루어지는지를 설정합니다.
    Scaling Mode: 파티클 시스템이 부모 오브젝트의 크기 변화에 따라 어떻게 반응하는지를 설정합니다.
    Play On Awake: 활성화되면 파티클 시스템이 Awake에서 자동으로 재생됩니다.
    Max Particles: 파티클 시스템에서 동시에 존재할 수 있는 최대 파티클 수입니다.
    Emitter Velocity: 파티클의 초기 속도가 파티클 시스템의 이동 속도를 반영하는지를 설정합니다.
    2. Emission
    Rate over Time: 시간당 생성되는 파티클 수입니다.
    Rate over Distance: 이동 거리당 생성되는 파티클 수입니다.
    Bursts: 특정 시간에 파티클을 일시에 많이 생성하는 설정입니다.
    3. Shape
    Shape: 파티클이 생성되는 영역의 모양을 설정합니다(예: Sphere, Hemisphere, Cone, Box 등).
    Radius: 파티클이 생성되는 영역의 반지름입니다(Shape에 따라 다름).
    4. Velocity over Lifetime
    파티클의 생애 주기 동안 속도의 변화를 설정합니다.
    5. Limit Velocity over Lifetime
    파티클의 생애 주기 동안 속도의 최대값을 제한합니다.
    6. Inherit Velocity
    파티클이 부모 오브젝트의 속도를 얼마나 상속받는지를 설정합니다.
    7. Force over Lifetime
    파티클의 생애 주기 동안 적용되는 힘을 설정합니다.
    8. Color over Lifetime
    파티클의 생애 주기 동안 색상의 변화를 설정합니다.
    9. Color by Speed
    파티클의 속도에 따라 색상의 변화를 설정합니다.
    10. Size over Lifetime
    파티클의 생애 주기 동안 크기의 변화를 설정합니다.
    11. Size by Speed
    파티클의 속도에 따라 크기의 변화를 설정합니다.
    12. Rotation over Lifetime
    파티클의 생애 주기 동안 회전의 변화를 설정합니다.
    13. Rotation by Speed
    파티클의 속도에 따라 회전의 변화를 설정합니다.
    14. External Forces
    파티클 시스템 외부에서 적용되는 힘(예: Wind Zone)을 설정합니다.
    15. Noise
    파티클의 움직임에 난수 기반의 노이즈를 추가하여 더욱 자연스러운 효과를 줍니다.
    16. Collision
    파티클이 다른 오브젝트와 충돌할 때의 동작을 설정합니다.
    Type: 충돌 유형을 설정합니다(예: Plane, World 등).
    Dampen: 충돌 시 속도 감쇠 비율입니다.
    Bounce: 충돌 시 반발 비율입니다.
    Lifetime Loss: 충돌 시 파티클 생명주기의 손실 비율입니다.
    Min Kill Speed: 파티클이 충돌 후 소멸되는 최소 속도입니다.
    17. Triggers
    파티클이 특정 트리거와 상호작용할 때의 동작을 설정합니다.
    18. Sub Emitters
    파티클이 다른 파티클을 생성할 때의 동작을 설정합니다.
    19. Texture Sheet Animation
    파티클의 텍스처 애니메이션을 설정합니다.
    Tiles: 텍스처 시트의 타일 수를 설정합니다.
    Animation: 애니메이션 유형을 설정합니다(예: Whole Sheet, Single Row).
    Frame over Time: 시간에 따른 프레임 변화를 설정합니다.
    20. Lights
    파티클이 빛을 발할 때의 동작을 설정합니다.
    21. Trails
    파티클이 이동하면서 자취를 남길 때의 동작을 설정합니다.
    22. Renderer
    파티클의 렌더링 방식과 머티리얼을 설정합니다.
    Render Mode: 파티클의 렌더링 모드를 설정합니다(예: Billboard, Mesh).
    Material: 파티클에 사용할 머티리얼을 설정합니다.
    Trail Material: 파티클 자취에 사용할 머티리얼을 설정합니다.
    Sorting Layer: 파티클의 정렬 레이어를 설정합니다.
    Sorting Order: 파티클의 정렬 순서를 설정합니다.
    활용 예제
    1. 파티클 시스템 생성 및 설정
    Hierarchy 창에서 파티클 시스템 생성:

    Create -> Effects -> Particle System을 선택하여 파티클 시스템을 생성합니다.
    Inspector 창에서 파티클 시스템 설정:

    Start Size를 조정하여 파티클의 기본 크기를 설정합니다.
    Shape 모듈에서 파티클이 생성될 영역의 모양을 설정합니다.
    Color over Lifetime 모듈을 활성화하여 파티클의 생애 주기 동안 색상의 변화를 설정합니다.
    Script를 사용하여 파티클 시스템 제어:

    파티클 시스템의 속성들을 스크립트를 통해 동적으로 변경할 수 있습니다.

    using UnityEngine;
    
    public class ParticleSystemController : MonoBehaviour
    {
        public ParticleSystem particleSystem;
    
        private void Start()
        {
            if (particleSystem != null)
            {
                var main = particleSystem.main;
                main.startSize = 0.5f; // 파티클의 시작 크기 설정
    
                var emission = particleSystem.emission;
                emission.rateOverTime = 10; // 시간당 생성되는 파티클 수 설정
            }
        }
    }


    이렇게 하면 Unity에서 파티클 시스템의 다양한 속성을 사용하여 시각적 효과를 조정할 수 있습니다. Inspector 창을 통해 각 모듈의 속성을 설정하고, 스크립트를 통해 동적으로 변경하여 원하는 파티클 효과를 구현할 수 있습니다.

     

    대제목 설명


     

    마무리

    마무리