* 매개변수
한 클래스에 같은 이름의 변수가 있으면 안 된다(name을 예시로).
근데 매개변수로 같은 이름을 써도 괜찮다. 왜냐하면 매개변수는 이 메서드 안에서만 사용되고, 메서드를 벗어나면 없는 것으로 치기 때문에.
만약 같은 이름의 변수(numA, numB)를 만든다면?
그래도 컴퓨터는 구분해준다.
어떻게? 변수numA, numB는 상위 블록, 메서드 안의 매개변수numA, numB는 하위 블록으로 구분되기에.
- 지역변수: 특정한 메소드 안에서만 이용되는 변수. (=매개변수.)
메서드 안에서 선언하는 변수는 전부 지역변수.
- 전역변수: 클래스 안에 선언된, 클래스 안에서 모두 사용되는 변수.
(같은 클래스의)메서드 안에 호출하려면 'this.[변수이름]'.
* $
큰따옴표(문자열) 앞에 '$' 를 넣어주면 문자열 속 { }안의 변수의 값이 그대로 나타난다.
* 액세스 수식자(≒접근 지정자)
변수, 메서드 등 앞에 아무것도 없으면 private.
public numB는 보이지만 private numA는 보이지 않음.
- 에디터상에서 볼 수 있다 = public으로 되어있다.
** Beginner Code 시작
무료 에셋 템플릿, Beginner Code 다운로드
https://assetstore.unity.com/packages/templates/tutorials/creator-kit-beginner-code-151986
Creator Kit: Beginner Code | 자습서 | Unity Asset Store
Use Creator Kit: Beginner Code from Unity Technologies to elevate your next project. Find this & more 자습서 and templates on the Unity Asset Store.
assetstore.unity.com
>>약간 내려보면 Overview에 튜토 있으니 추가 참고하려면 참고하라.
....
managers: 게임 UI, 음악 등등
leverdesign: 마을 전체의 정보들을 담고 있음. 건물,
게임 만드는데 어려운 것은 코드보단 오브젝트가 굉장히 많아서 어려운 게 더 크다.
= 만들어진 게 많다 → 파악하는데 시간이 걸린다.
→ 이름을 잘 지어야 한다. 그래야 조금이라도 파악이 더 쉽다.
스크립트 SpawnerSample 열기
using UnityEngine; using CreatorKitCode; public class SpawnerSample : MonoBehaviour { public GameObject ObjectToSpawn; void Start() { int angle = 15; Vector3 spawnPosition = transform.position; Vector3 direction = Quaternion.Euler(0, angle, 0) * Vector3.right; spawnPosition = transform.position + direction * 2; Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity); angle = 55; direction = Quaternion.Euler(0, angle, 0) * Vector3.right; spawnPosition = transform.position + direction * 2; Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity); angle = 95; direction = Quaternion.Euler(0, angle, 0) * Vector3.right; spawnPosition = transform.position + direction * 2; Instantiate(ObjectToSpawn, spawnPosition, Quaternion.identity); } } |
GameObject : 유니티에서 제공하는 형. Hierarchy 상에 있는 게임 오브젝트를 담을 수 있다.
Vector3 : 유니티에서 제공하는 자료형/구조체. float 값을 3개 가지고 있는 자료형(=float x, y, z). 세 개를 동시에 처리하려고 사용함. 오브젝트 기본 생성할 때, 트랜스폼의 Position, scale 등의 3개 값이 vector3이다.
transform.position : 속성Inspector의 position 3개 값을 말함. MonoBehaviour안에 기본으로 존재함.
Quaternion.Euler :
* radius라는 새 변수를 만들고 스폰되는 거리를 늘려보아라.
본래 포션이 스폰되는 위치(spawnPosition = transform.position + direction * 2;).
첫 번째 방법,
여기에 radius 라는 변수를 선언해 5로 초기화하고, 숫자 2를 대체한다.
포션 스폰되는 위치가 +3 더 멀어졌다.
두 번째 방법.
아예 메서드 밖으로 빼서 에디터에 radius 값을 조정할 수 있게 만든다.
이 수치를 5로 늘려도 같은 결과가 발생한다.
* 함수의 양을 줄여보자.
어차피 똑같은 함수에 수치만 다른 값, 함수를 줄여서 표현해보자.
(포션을 늘린 것은 겸사겸사)
그렇게 나온 결과.
게임 플레이 시 이렇게 나온다.
* for문을 이용해서 함수 줄이기
for([반복할 때 사용할 인덱스 변수]; [반복할 조건]; [한 번 반복했을 때 수행할 내용]) { ~내용~ }
for 시작하기에 앞서, Array를 알아야 한다.
어레이Array: 동일한 자료형의 변수 묶음. 여러 개의 변숫값을 하나의 묶음으로 해주고 싶을 때.
int[] angles; : angle들의 값을 가진 int 어레이 생성.
만든 Array를 바탕으로 for문을 작성한다.
Q. for 문의 반복 조건이 'i는 angles의 길이보다 작을 때'인데 이렇게 하면 맨 마지막 꺼 i와 숫자가 같아지니까 스폰이 안돼야 하는 것 아닌가요??
A. Length는 길이니까 1부터 시작! 그럼까지인 Array의 숫자보다 반드시 한 개 크므로 '<' 이 맞다.
'메타버스기반게임콘텐츠기획 > 그날의 강의' 카테고리의 다른 글
(9-4) 유니티 unity : 빛 효과를 넣어서 그럴듯해 보이게 환경(레벨) 설정, 캐릭터(에너미)의 이동 반경 설정, 카메라 설정, 포스트 프로세싱, UI 띄우기 (0) | 2021.12.23 |
---|---|
(9-3) 유니티unity : 다운 받은 에셋으로 캐릭터, 움직임, 애니메이션 만들기 (0) | 2021.12.22 |
(9-1) 유니티unity - 오브젝트에 스크립트 컴포넌트 추가하기 (0) | 2021.12.20 |
(8-5) 유니티 (0) | 2021.12.17 |
(8-4) 유니티unity (0) | 2021.12.15 |