EntityService

엔티티와 관련된 여러 기능을 제공합니다.

# Methods

[{"index":"void Destroy(Entity entity)","0":"엔티티를 파괴합니다."}]

[{"index":"void Destroy(Entity entity, float delaySeconds)","0":"엔티티를 delaySeconds(초) 후 파괴합니다."}]

[{"index":"table GetEntitiesByPath(string worldPath)","0":"worldPath에 해당하는 경로의 엔티티를 반환합니다."}]

[{"index":"table GetEntitiesByTag(string tag)","0":"tag에 해당하는 태그를 가진 엔티티를 찾아 반환합니다."}]

[{"index":"table GetEntitiesSpawnedByModel(Model model)","0":"model에 해당하는 모델로 소환된 엔티티를 찾아 반환합니다."}]

[{"index":"table GetEntitiesSpawnedByModelId(string modelId)","0":"modelId에 해당하는 모델로 소환된 엔티티를 찾아 반환합니다."}]

[{"index":"Entity GetEntity(string id)","0":"id로 엔티티를 찾아 반환합니다."}]

[{"index":"Entity GetEntityByPath(string worldPath)","0":"해당하는 worldPath의 엔티티를 반환합니다."}]

[{"index":"Entity GetEntityByTag(string tag)","0":"해당하는 tag를 가진 엔티티를 찾아 반환합니다."}]

[{"index":"table GetSameModelEntities(Entity entity)","0":"entity와 같은 모델을 지니는 엔티티들을 찾아 반환합니다."}]

[{"index":"boolean IsValid(Entity entity)","0":"entity가 유효한 엔티티인지 확인합니다. 이미 파괴된 엔티티는 유효하지 않습니다."}]

##### inherited from Service:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 이벤트 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]

# Events

[{"index":"EntityCreateEvent","0":"엔티티 생성 시 발생하는 이벤트입니다."}]

[{"index":"EntityDestroyEvent","0":"엔티티 파괴 시 발생하는 이벤트입니다."}]

# Examples

#### Destroy

특정 id의 엔티티를 찾아 삭제하는 예제입니다.
    
    
    @Component
    script EntityDestroyer extends Component
        @ExecSpace("ServerOnly")
        method void DestroyTargetEntity(string id)
        local entity = _EntityService:GetEntity(id)
        _EntityService:Destroy(entity)
        end
    end
    

#### GetEntitiesByPath

특정 path에 생성된 엔티티들의 `enable`을 수정하는 예제입니다.
    
    
    @Component
    script EntityPathEnabler extends Component
        @ExecSpace("ServerOnly")
        method void EnablePathEntities(string path, boolean enable)
        local entities = _EntityService:GetEntitiesByPath(path)
        for k, v in pairs(entities) do
        	v.Enable = enable
        end
        end
    end
    

#### GetEntitiesByTag

`TagComponent`를 통해 특정 Tag를 가지고 있는 엔티티들의 `visible`을 수정하는 예제입니다.
    
    
    @Component
    script TaggedVisibilityController extends Component
        @ExecSpace("ServerOnly")
        method void VisibleTagEntities(string tag, boolean visible)
        local entities = _EntityService:GetEntitiesByTag(tag)
        for k, v in pairs(entities) do
        	v.Visible = visible
        end
        end
    end
    

#### GetEntitiesSpawnedByModelId

MoveMonster model로 생성된 엔티티들을 점프시키는 예제입니다.
    
    
    @Component
    script MonsterJumper extends Component
        @ExecSpace("ServerOnly")
        method void JumpMoveMonsters()
        local entities = _EntityService:GetEntitiesSpawnedByModelId("model://movemonster")
        for k, v in pairs(entities) do
        	v.RigidbodyComponent:AddForce(Vector2(0.0, 5.0))
        end
        end
    end
    

# SeeAlso

  * RigidbodyComponent
  * [엔티티를 탐색하는 EntityService](/docs?postId=201)