Unity C# 기초와 Unity Editor 오브젝트 제어
변수 종류
- 지역변수(Local Variable)
- 메소드나 블록 내에서 선언되고 그 범위 내에서만 사용 가능
- 메소드가 종료되면 메모리에서 제거됨
- 다른 메소드에서 접근 불가능
- 멤버변수(Instance Variable)
- 클래스 내부, 메소드 외부에 선언됨
- 객체(인스턴스)마다 별도로 메모리를 할당받음
- 객체가 생성될 때 메모리에 할당되고, 객체가 소멸될 때 제거됨
- 정적변수(Static Variable)
- static 키워드로 선언
- 클래스당 하나만 존재하며 모든 인스턴스가 공유
- 프로그램 시작 시 메모리에 할당되고 종료 시 제거됨
- 클래스 이름으로 직접 접근 가능 (예: ClassName.StaticVariable)
- 전역변수(Global Variable)
- C#에서는 엄밀한 의미의 전역변수는 없음
- 보통 public static 변수가 이와 유사한 역할
- 어느 클래스에서나 접근 가능한 변수를 의미
데이터 타입
Array(배열)와 List의 차이
- Array(배열)
- 크기가 고정됨: 선언 시 크기를 지정하고 나중에 변경 불가
- 메모리에 연속적으로 할당됨
- 접근 속도가 빠름
- 선언 예: int[] numbers = new int[5];
- List
- 동적 크기: 요소를 추가하거나 제거할 때 크기가 자동으로 조정됨
- 내부적으로 배열을 사용하지만 필요에 따라 크기를 조정
- 다양한 메소드 제공: Add, Remove, Find 등
- 선언 예: List<int> numbers = new List<int>();
- 사용하려면 using System.Collections.Generic; 필요
배열과 List를 직접 스크립트에서 구현한 코드 여기서 새로웠던건 앞에 접근제한자 public을 붙였을 경우 유니티 에디터에서도 배열을 확인할 수 있었던것인데 코드상에서는 배열의 추가나 순서변경등이 어려웠다면 유니티 에디터에서는 이런 부분에서 좀더 자유롭게 변경하고 순서를 바꾼다던가 추가, 삭제가 가능했다.
List를 사용할때는 using Collections을 불러와줘야해서 처음 정의했을때는 에러 밑줄이 생기고 단축키 Alt + Enter로 찾거나 Alt를 눌러 마우스를 가져다대서 using 패키지를 가져올 수 있음 List도 배열과 마찬가지로 public을 통해 유니티 에디터상에서 확인이 가능하고 Add를 통해 데이터를 입력할 수 있음
또한 접근 제한자를 여러가지 설정해보면서 어디까지 접근을 허용하고 사용하지 못하게 막을 수 있는지를 알아봄
변수 정의할때 아무것도 붙이지 않는것과 private, public, SerializeField를 붙여보며 확인
SerializeField를 아직 확실하게 배우지는 않았지만 코드상에서는 private로 보호를 하지만 Field를 붙임으로써 유니티 에디터상에서 쉽게 데이터를 수정하거나 확인할 수 있도록 허용해주는걸로 생각됨
다른 Script끼리의 접근도 확인해봄
scriptA와 B를 생성해 B에서 A의 객체를 생성해 접근제한자를 확인해보았는데 public빼고는 모두 접근이 불가능했고 유니티 에디터 상에서도 B에서 PA를 지정해주지 않는 이상 number2에대한 접근을 허용하지 않았다. 하지만 직접 B의 pA객체에 A를 넣어줌으로써 Start() 되었을때 number2가 20으로 변경되는걸 확인할 수 있었다.
오브젝트 제어쪽에서는 빈 게임 오브젝트를 생성해 component를 추가해주고 cube와 동일하게 mesh filter, meshRenderer를 맞춰주니 모양이 똑같이 변함
코드상에서 데이터 타입이 GameObject의 대해서도 실습해보았는데 처음에는 대상이 None으로 되어있어서 찾지 못했지만 하이라키에서 직접 obj에 객체 오브젝트를 입력해주니 이름이 변하는것을 확인
추가로 GameObject.Find를 통해서 해당 이름의 객체 오브젝트를 찾아내고 이름까지 변경하는 실습
'멋사교육' 카테고리의 다른 글
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 9일차 (2) | 2025.05.25 |
---|---|
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 8일차 (0) | 2025.05.22 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 6일차 (0) | 2025.05.20 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 5일차 (2) | 2025.05.19 |
멋쟁이사자처럼부트캠프 유니티 게임 개발 5기 4일차 (0) | 2025.05.16 |