유니티 잡담 팁 과 중간 점검
카테고리 없음 2025. 10. 6. 16:53 |
강의 그대로 따라해서 만든거
기본 기능 몇개만 구현
+
배운 팁
Mathf.FloorToInt
는 소수점 버림을 뜻한다
CeilToInt
는 소수점 올림을 뜻한다
int 정수 값과 float 소수점 값을 넘나들 때
이런 버림, 올림 같은 걸 써야 한다
Get( level );
Get(level);
이렇게 띄어 쓰기 해도 됨
0.5f 는 0.5 초 를 의미함
직렬화 (Serialization)
개체를 저장 또는 전송하기 위해 변환
퍼블릭 클래스 정했는데, 유니티 인스펙터 상에 안 뜨면
[System.Serializable] 를 위에 적어주면 뜬다
초기화
맨 처음에 행해져야 하는 일
설정하기 라는 뜻
animCon[data.spriteType]
이렇게 대괄호 [] 안에 들어가면
인덱스 몇번째 변수로 지정하겠다는 뜻
NullReferenceException: Object reference not set
오류 날 땐
void Start() 를
void Awake() 로 변경 해 봐라
+
컴포넌트 설정을 스크립트에서 다루기
1. 인스펙터 창에서
유니티에서 제공하는 기본 컴포넌트 를 적용함
2. 변수 변수이름
변수를 설정함. 새로 하나 만드는 거임.
3. 변수에 컴포넌트 적용함
보이드 어웨이크 안에서 행해짐
+
if (!collision.CompareTag("Enemy") || per == -1)
짧게 줄여쓰기
if (!collision.CompareTag("Enemy"))
return;
if (per == -1)
return;
보기 좋게 나눠서 표현하기
위 코드 두개는 같다
적 태그가 에너미가 아니면 암것도 안한다
관통력이 무한이면 암것도 안한다
+
에러메시지 더블클릭해보면 어디서 에러났는지 위치 알 수있다고 함
+
public class Bullet : MonoBehaviour
{
public float damage;
public int per;
Rigidbody2D rigid;
void Awake()
{
rigid = GetComponent<Rigidbody2D>();
}
public void Init(float damage, int per, Vector3 dir)
{
this.damage = damage;
this.per = per; // 관통력. 수치가 -1이면 무한관통. 2이면 2마리만 관통
if (per > -1){
//-1은 관통력 무한임.
rigid.linearVelocity = dir * 15f;
//dir * 15f 는 날아가는 속도
}
}
void OnTriggerEnter2D(Collider2D collision)
{
if (!collision.CompareTag("Enemy") || per == -1)
return;
per--;
if (per == -1)
{
rigid.linearVelocity = Vector2.zero;
gameObject.SetActive(false);
}
}
}
이런 식으로
총알 오브젝트에
per , 관통력 이라는 속성을 넣어줄 수 있다고함
이 관통력이 재밌음
-1 이면 무한 관통
1이면 한마리만 맞음
2이면 두마리만 맞음
+
GameManager 에게 다 몰아주지 말고
SkillManager , UIManager 등으로 역할 나눠라