인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

최성호님의 프로필 이미지
최성호

작성한 질문수

유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발

캐릭터 구조체 생성 및 로드

117강 구조체를 정의하여 ShipData 구성

작성

·

186

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
ShipData 구조체의 코드는 아래와 같습니다.
public int id; public float base_dmg; public string name; public string kName;
 
public ShipData(int id, float baseDmg, string name, string kName)
{
this.id = id;
this.base_dmg = baseDmg;
this.name = name;
this.kName = kName;
}
 
생성자로 매개변수를 받아서 각각의 데이터에 저장할거면
변수를 왜 굳이 public으로 선언할까요?
 
위의 구조체를 사용하는 코드에서는
for (int i = 1; i < lines.Length-1; i++)
        {
            string[] row = lines[i].Split('\t');
          ships[i - 1].id = int.Parse(row[0]);
            ships[i - 1].base_dmg = float.Parse(row[1]);
            ships[i - 1].name = row[2];
          ships[i - 1].kName = row[3];
      }
 
이렇게 직접 접근하기 위해서는 위의 코드처럼 public 이어야 가능할것 같아요.
그런데 생성자에서 매개변수를 받는 다는 의미는
 
위의 for문에서
ships[i - 1] = new ShipData(int.Parse(row[0]), float.Parse(row[1]), row[2], row[3]);
 
구조체의 데이터를 은닉하고 위와같은 식으로 사용하겠다는 뜻이 아닌가요?
 
어떤쪽으로 사용해도 동작에는 이상없으나 이제 원리를 깨우치는 입장에서 여러 배운 내용들이 겹치며 의도가 약간 헷갈리고 있어서 질문해 봅니다.
 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
최성호님의 프로필 이미지
최성호

작성한 질문수

질문하기