Announcement

Collapse
No announcement yet.

멤버 변수가 변경이 안됩니다 t_t

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • replied
    답변이 늦어서 죄송합니다.
    donggas90님 말대로 엑세스 시간이 문제였습니다....
    hudmovie를 다 로드를 시켜준 뒤에 map_index를 넣었더니 잘 실행이되더군요...T_T
    이렇게 간단한 것이였는데 이걸로 2주를 잡아먹다니..................

    감사합니다 !!! ㅎㅎ 즐거운하루되세요!!

    Leave a comment:


  • replied
    로그된 시각을 보면

    map_index가 2로 할당된 시간(약43초경)이

    엑세스 시간(약18초경)보다 늦습니다.

    그리고 폰의 myHUD.HudMovie와 접근을 시도한 인스턴스가 같은 인스턴스인지 확인이 필요합니다.

    로그는 정적 전역이므로 Object.Name속성을 같이 찍어 보십시오.

    혹은 UpdateWorldmap()의 호출 대상과 폰의 myHUD.HudMovie가 일치하는지 확인하십시오.

    Leave a comment:


  • replied
    [0043.82] ScriptLog: Emjaylog mapindex: 2
    [0043.82] ScriptLog: Emjaylog Stage: 1

    initStageWorldmap()에서

    인수인 stage와 멤버 변수인 map_index가 저렇게 나옵니다
    클래스 멤버변수로 맨위 에
    var int map_index; 를 선언 했구요.
    이 클래스에서 map_index를 알기 위해 이렇게 사용하였습니다.
    다른 함수에서는
    function UpdateWorldmap(UTPawn P)
    {
    local UTPlayerController PC;
    PC = UTPlayerController(GetPC());

    `Log("MapMC.GotoAndStopI(map_index)"@map_index);
    MapMC.GotoAndStopI(map_index);
    MapMC.SetVisible(true);

    `Log("Emjay UpdateWorldmap in!");
    }
    이런 식으로 접근 하였습니다. 이 함수에서 호출 시에

    [0018.52] ScriptLog: MapMC.GotoAndStopI(map_index): 0

    이렇게 로그가 남더군요...

    뿐만 아니라 다른 함수에서도 map_index를 사용하지 않고 그냥 로그를 남겨본 결과도 0으로 남더군요....
    왜 이렇게 값이 변하지 않는 걸까요..

    Leave a comment:


  • replied
    initStageWorldmap()에서

    인수인 stage와 멤버 변수인 map_index를 동시에 찍어 보십시오.


    그리고 그 출력 결과와

    다른 함수에서 어떤식으로 접근했는지

    그 코드도 보여주십시오.

    Leave a comment:


  • started a topic 멤버 변수가 변경이 안됩니다 t_t

    멤버 변수가 변경이 안됩니다 t_t

    게임화면에 각 스테이지에 맞는 그림을 띄우려고 작업중인데요.

    게임이 시작하면
    저의 pawn클래스에서



    function GetGameStatus(SeqAct_GameStatus MyAction)
    {

    local int CurrentStage;
    local LexPlayerController PC;

    PC = LexPlayerController(Controller);



    PC.SetStagemap(CurrentStage);
    `log("<<<<<<<<<<<<GetGameStatus CurrentStage : "@CurrentStage);
    }

    이 함수가 실행되어 저의 playercontroller에 있는
    function SetStagemap(int Stage)
    {
    local UTGFxHudWrapper H;

    H = UTGFxHudWrapper(myHUD);

    if(WorldInfo.NetMode != NM_Standalone)
    return;

    H.HudMovie.initStageWorldmap(Stage);
    `Log("Stage : " @Stage);
    }
    SetStagemap함수가 실행되어 GfxMinimapHud클래스에 만들어놓은 initStageWorldmap(Stage);함수를 실행하여
    Hud클래스에 Stage값을 보내는 흐름입니다.

    (GfxMinimapHud.uc 내에 있는 함수)
    var int map_index; //멤버변수

    function initStageWorldmap(int stage)
    {
    map_index = stage + 1; stage의 결과에 따라 map_index도 증가하게 됩니다.
    `log("Emjaylog mapindex1: "@map_index);
    }

    이 함수에 들어와 있을 때는 (예 stage가 1이 왔을 때) map_index가 2가 되어있는 상태로 유지가 됩니다.
    그러나 GfxMinimapHud.uc내에 다른 함수에서 map_index를 접근했을 시에는 변수 값이 어떻게든 상관없이 0으로 뜨더군요..


    혹시나 초기값을 주지 않아서 그런가 하여 defaultproperties에다가 map_index = 1 로 초기화를 시켜주었더니
    initStageWorldmap 함수에서는 map_index가 2로 변하는가 싶더니(stage가 1로 왔을경우)
    다시 다른 함수에서 호출할 때는 1로만 쭉 나타납니다..

    다른 함수에서 변경한 변수가 왜 자꾸 이런식으로 바뀌지 않고 처음상태를 유지하고 있는지 알려주세요 T_T
Working...
X