본문 바로가기
프로그래밍/Unreal Engine 3

state 오버라이드

by neive 2012. 8. 24.
728x90

 

 

언리얼 스크립트에는 상속에 해당하는 extends 가 있고 controller 역시 예외없이 적용된다

하지만 state 는 어떨까? 예제를 보자..

 

소스


class MyController extends AIController;

state Attack
{
    local int i;

Begin:
    `Log("MyController::Attack");
}

//-------------------------------------------------------

class MonsterController extends MyController;

state Attack
{
    //local int i; // 이건 이미 MyController 에 있어서 중복. 빌드할 때 warring 이 뜬다
Begin:
    `Log("MonsterController::Attack");
}

//-------------------------------------------------------

// 확실히 어딘가에서 MonsterController 의 Attack State 로 바꾸면 로그는 
// [MonsterController::Attack] 가 출력된다
// 하지만 종종 다운이 된다 기능이 많은 state 일 수록 더더욱 위험

 

이 예제대로 흔하게 작성을 할 테지만 빌드 역시 정상으로 되고... 하지만 실제 사용을 하면 간혹 클라이언트가

다운이 되는 문제가 있다. 되도록이면 피하고 싶다 원인도 알기 어려울 정도. 그러면 어떻게 할까?

 

소스


class MyController extends AIController;

function Run_Attack()
{
    `Log("MyController::Run_Attack");
}

state Attack
{
    local int i;

Begin:
    Run_Attack();
}

//-------------------------------------------------------

class MonsterController extends MyController;

function Run_Attack()
{
    `Log("MonsterController::Run_Attack");
}

//-------------------------------------------------------

// Monster 쪽에는 state 자체도 없다.. 호출을 하면 MyController 쪽의 state 
// 상태가 되며 안에서 Run_Attack(); 은 Monster 쪽의 Run_Attack() 이 작동
// 하게 되므로 각각 다른 동작을 하고 싶을 때는 이렇게 하는게 차라리 안전.

 

728x90

'프로그래밍 > Unreal Engine 3' 카테고리의 다른 글

게임플레이 프로파일러  (0) 2012.08.27
내 게임 만들기 (23)  (0) 2012.08.24
내 게임 만들기 (22)  (0) 2012.08.10
내 게임 만들기 (21)  (0) 2012.08.10
내 게임 만들기 (20)  (0) 2012.08.10

댓글