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 |
댓글