임시 정리 3 / Blah blah 3
참고 링크들 북마크에 정리
GameObject 와 Transform
// (1) 모든 오브젝트는 Transform 을 갖는다.
// (2) Position, Rotation, Scale, 부모/자식상태를 다루는데 사용된다.
// 부모의 위치, 회전 등이 자식에게 적용되어야 하기 때문에 Transform 이 사용된다.
// 모든 오브젝트의 자식까지 모두 검색하지만,
// 활성화 상태인 오브젝트만 찾는다.
GameObject GameObject.Find(string);
// 해당 Transform 을 가진 게임 오브젝트의 자식을 검색한다.
// 활성화 상태와 상관 없이 찾는다.
// (자기 자신을 포함하지 않는다.)
// (직계 자식만을 검색하며 손자 이하는 검색하지 않는다.)
Transform transform.Find(string);
// 반환형이 Transform 이므로 게임 오브젝트는 transform.Find(string).gameObject 와 같이 접근해야 한다.
// 로컬 방향을 월드 방향으로 변환한다.
transform.TransformDirection(localDirection);
// 월드 방향을 로컬 방향으로 변환한다.
transform.InverseTransformDirection(worldDirection);
// 로컬 벡터를 월드 벡터로 변환한다.
transform.TransformDirection(localVector);
// 월드 벡터를 로컬 벡터로 변환한다.
transform.InverseTransformDirection(worldVector);
// 로컬 위치를 월드 위치로 변환한다.
transform.TransformPoint(localPosition);
// 월드 위치를 로컬 위치로 변환한다.
transform.InverseTransformPoint(worldPosition);
// 각도를 이용
Vector3 transform.eulerAngles
// Quaternion 을 이용
Quaternion transform.rotation
// 부모 transform
transform.parent;
// 다른 Transform(오브젝트) 의 자식으로 등록
// 로컬 좌표는 유지하고 월드 좌표가 변한다.
transform.SetParent(transformParent, false);
// 월드 좌표는 유지하고 로컬 좌표가 변한다.
transform.SetParent(transformParent, true);
// 자식에서 벗어남
transform.parent = null;
transform.SetParent(null);
// 직계 자식을 순회하기
foreach (Transform child in transform)
// 타겟을 보는 방향이 forward 가 된다.
transform.LookAt(target.transform);
// 타켓을 보도록 회전값을 지정한다.
Quaternion rot = Quaternion.LookRotation(target.position - transform.position);
transform.rotation = rot;
// 타겟을 보는 방향을 내 앞 방향으로 한다.
transform.forward = (target.position - transform.position).normalized;
- 참고
https://m.blog.naver.com/os2dr/221556006710
https://docs.unity3d.com/ScriptReference/GameObject.Find.html
https://docs.unity3d.com/ScriptReference/Transform.Find.html
https://docs.unity3d.com/2017.4/Documentation/Manual/Transforms.html
https://loadofprogrammer.tistory.com/69
https://kukuta.tistory.com/177
https://young-94.tistory.com/217
https://ansohxxn.github.io/unitydocs/transform/
https://godnr149.tistory.com/67
특정 오브젝트의 자식, 특정 위치에 Instantiate 하기
Instantiate 는 프리팹 생성뿐만 아니라, 하이어라키에 존재하는 게임 오브젝트를 복사할 수도 있다.
// 특정 오브젝트의 자식으로 생성
Instantiate(gameObject, transformParent);
// 특정 위치와 회전값으로 생성
Instantiate(gameObject, vector3Position, quaternionRotation);
// 특정 오브젝트의 자식으로 특정 위치와 회전값으로 생성
Instantiate(gameObject, vector3Position, quaternionRotation, transformParent);
UnityEngine.Random
// 정수는 최댓값을 포함하지 않는다.
int UnityEngine.Random.range(minInclusive, maxExclusive);
// 실수는 최댓값을 포함한다.
float UnityEngine.Random.range(minInclusive, maxInclusive);
// 0.0 ~ 1.0 사이 실수 반환
float UnityEngine.Random.value;
메쉬와 머티리얼
메쉬 : 버텍스(점)으로 이루어진 몸체
머티리얼 : 표면의 재질
텍스처 : 표면의 질감
Mesh Filter 에서 메쉬를 설정하여 모양을 정하고
Mesh Renderer 에서 머티리얼을 설정하여 표면을 정할 수 있다.
렌더링과 쉐이딩
렌더링 : 3차원 물체를 2차원으로 표현하는 과정
쉐이딩 : 빛에 비친 물체가 어떻게 보여질지 결정
PBR : 물리 기반 렌더링 (빛이 물체 표면에 반사되는 경로를 계산하여 처리한다.)
- 참고
https://blog.naver.com/sjh6453/220785386983
https://parksh86.tistory.com/168
게임 오브젝트 활성화 상태 확인
GameObject.activeSelf
Clone 오브젝트를 이름으로 구분하기
// 이름에 Enemy 가 포함
other.gameObject.name.Contains("Enemy");
List 다루는 방법
List<GameObject> list = new List<GameObject>();
// 요소의 개수
list.Count;
// 첫번째 요소
list.First();
// 마지막 요소
list.Last();
// 추가
list.Add(element);
// 삭제
list.Remove(element);
// 초기화
list.Clear();
- 참고
https://blog.naver.com/empty_wagon/20149356844
유니티 C# 싱글톤 패턴
public class Manager : MonoBehaviour
{
public static Manager Instance;
void Awake()
{
if (Instance == null)
Instance = this;
}
}
PlayerPrefs (설정값을 레지스트리에 저장하는 방법)
// 문자열 설정
PlayerPrefs.SetString(strKey, strValue);
// 문자열 가져오기
string PlayerPrefs.GetString(strKey);
// 정수 설정
PlayerPrefs.SetInt(strKey, intValue);
// 정수 가져오기
int PlayerPrefs.GetInt(strKey);
// 실수 설정
PlayerPrefs.SetFloat(strKey, floatValue);
// 실수 가져오기
float PlayerPrefs.GetFloat(strKey);
// 존재 여부 확인
bool PlayerPrefs.HasKey(strKey);
// 키 삭제
PlayerPrefs.DeleteKey(strKey);
// 전부 삭제
PlayerPrefs.DeleteAll();
// 즉시 디스크에 반영
// 보통은 OnApplicationQuit() 에 저장된다.
// 쓰는 도중 버벅일 수 있으므로, 특정한 상황에서만 사용할 것
PlayerPrefs.Save();
- 참고
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html