본문바로가기

지원

!!!!

Home > 지원 > Forum

Forum

랜덤 도와주세요
  • 제가 RandomScript.cs라는 파일을 만들고 square라는 GameObject를 10개를 만들어서 (square, square (1), square (2),....) 전부 RandomScript를 넣었습니다.(Comonent) 그리고 이 RandomScript.cs의 내용은 다음과 같아요 .

    publci int R;

    if(Input.GeyKeyDown(KeyCode.X)){
      R = Random.Range(0,10);
    }

    이런 내용입니다...
    제가 원하는건 square라는 모든 GameObject가 전부 각각 다른 R값을 가져야 하는데 문제는 R값이 모두 동일합니다..
    도와주십시요..

    ====== 수정하겠습니다.... ======

    A.cs 와 RandomScript.cs가 있습니다.
    RandomScript.cs는 Start()안에 R = Random.Range(0,10);이 있습니다.
    그리고 public rand_()라는 함수를 선언합니다. 이 함수는
    R = A.GetComponent<A>().a;
    R = Random.Range(R, R+10);

    여기까진 좋습니다. 시작하면 전부 다른 값을 가지니까요
    더 정확히는, X를 누르면
    A.cs가 square1,2,3,4,...의 모든 R값을 비교해서 가장 높은 square를 알아냅니다.
    R값이 가장 높은 square를 k번째 square 즉, square[k]라고 합시다.

    A.cs가 k값을 알아낸 직후 바로 class에서 public int a; 선언
    a = sqaure[k].GetComponent<RandomScript>().R;

    i반복문 돌려서
    sqaure[i].GetComponent<RandomScript>().rand_();
    를 했습니다.

    이제 여기서 모든 sqaure들이 같은 값을 가집니다.. 왜그런지 모르겠습니다...
    {문법 스펠링 틀렸을수도 있지만, 문법이 위와 같다는 것 뿐, 디버깅은 됩니다.}
  • Replies
  • 동일한 코드 동일한 방식으로 빌드해봤을때 정상 작동 확인했습니다 (10개의 게임오브젝트 만들어서 각각 넣어서 확인도 해봤습니다)
    우연히 같은값이 나왔거나, 다른 문제가 있는게 아닌가 싶네요
    gominky 2019.03.25
  • 맞습니다... 다른문제같아서 내용 수정중입니다..
    castle0416 2019.03.25
  • 구조가 조금 복잡하네요.

    가장 높은 값을 뽑아내는 함수부분에 Debug 돌려서 가장 높은 값이 항상 동일한지 확인해보시면 될꺼같습니다.
    gominky 2019.03.25
  • 해봤습니다.. 시작했을때나 수동으로R값을 바꿨을때 x를 누르면 정상적으로 높은값을 가지는 게임오브젝트와 그 인덱스를 갖습니다.
    castle0416 2019.03.25
  • 확실한건 위 코드 내용만으로는 오류사항이 없습니다
    빼먹은 부분에 뭔가 실수코드가 들어있는것같은데.. 함수 리펙토링 하시면서 실수하신 부분 찾는 수 밖에 없는것 같네요
    오브젝트 이름들이 너무 어렵게 되어있습니다
    차후 수정보완을 위해서라도 리펙토링 진행하시면서 함수나 변수 이름 변경을 권장합니다
    gominky 2019.03.25
Back to Top