Unity 게임

(Unity) 유니티 끄적끄적

그린티_ 2023. 12. 2. 01:32
반응형

유니티 쓸 때

쓰면서 느낀거

  • C#을 쓰는거라 그런지 C언어와 크게 다르지 않음
  • Unity에서 쓰이는 언어들이 낯설음 (GetComponent 라던가~ new Vecotor2 ~)
  • NULLReferenceException
    • 진짜 몰라서 어려웠음
    • 오브젝트를 레퍼런스하지 않는 레퍼런스 변수에 액세스하려고 하면 발생
    • 그래도 어디가 문제인지 알려줌
      • 이런 식으로 GameObject / InputField / Button UI요소를 명확히 쓸 것!
      • GameObject
        • 캐릭터, 아이템, 광원, 카메라, 특수 효과, 등 게임 세상을 구성하는 모든 오브젝트는 게임 오브젝트
        • 독자적으로 많은 것을 하기보다는 실질적 기능을 수행하는 컴포넌트(Components) 의 컨테이너 역할
        • 위의 사진에서는 다른 오브젝트들(뼈대 들)을 받아옴
      • InputField
        • 유니티에서 텍스트를 입력받을 수 있는 UI 요소
        • 사용자가 키보드를 사용하여 텍스트를 입력하거나, 터치 입력을 통해 텍스트를 입력 가능
          • 주로 사용자가 이름, 비밀번호 등을 입력하는 데 사용됨
          • 위의 사진에서는 다른 오브젝트들 안의 Input Field 값을 받는데 사용
      • Button
        • 유니티에서 클릭할 수 있는 UI 요소
        • 사용자가 버튼을 클릭하면 지정된 동작이 실행되도록 설정할 수 있음
        • 주로 메뉴를 선택하거나 게임에서 특정 동작을 수행하는 데 사용
        • Button 안에 OnClick 안에서 설정하여 사용
      • 이렇게 비워져 있는 경우에도 발생하는 거 같음
      • 저기 그림처럼 해당 오브젝트에서 변수 값을 받아오고 싶다면 받아 올 오브젝트에 해당 오브젝트를 넣을 것
      • 이럴 경우 위의 문제가 해결 되었음

반복문

  • 마지막의 yield ~~ 에서 WaitForSeconds()를 써서 0.2f만큼 기다렸다가 계속 실행하도록!

싱글톤

  • 이렇게 해서 다른 스크립트에서 이 스크립트 변수 및 함수 사용 가능

회전

  • transform.Rotate(new Vector3( x, y, z) * Time.deltaTime);
  • 속도 조정 가능
    • speed 변수 추가하여 x, y, z 에 바로 곱하면 됨
    • 음수 곱하면 반대로 감
  • 부모 오브젝트는 회전에 큰 문제가 없다
  • BUt, 자식 오브젝트를 회전시킨다면 local 사용

rigid body

  • 강체
  • 그냥 물체 덩어리
  • 무게, 공기저항
  • 중력 사용
  • 물리에 관한 내용들이 있음

hinge joint

  • rigid body들 끼리 묶음
  • 관절 설정을 잘 해야함
  • 계속 변화를 원하면 auto
  • 하지않으면 auto를 풀면된다
  • anchor를 움직임으로써 연결된 물체를 움직일 수 있다
  • - 이거 굴삭기 할 때 obj 파일 끌고 와서 했을 때는 잘 안됐는데 - 3d object (cube) 만들어서 cylinder 만들어서 했을 때는 잘됐음 (나를 참 애먹였다)
  • 뼈대를 직접 만들어서 할 경우 작업이 쉬워짐
  • - 관절의 위치를 전체 좌표가 아닌 오브젝트 내부의 좌표로만 움직여 더 확실하게 가능 - 대신에 직접 만들어야 하는 만큼 원본 만큼의 퀄리티가 낮을 수도 있음 - 하지만 뼈대 부분이라 Cylinder 대충 모양은 따라하기 쉽다
  • 하면서 느낀 점
    • 연결되는 부분 중에서 회전하기에 적합한 곳에 hinge joint를 넣는다
    • joint + - 값에 따라 팔의 각도가 위아래로 움직이기에 각도를 잘 살펴 봐야한다
    • 즉 joint값이 바로 팔의 각도 값이 되는 것이 아니라 joint 값에 따른 팔의 각도가 결정 되기에 joint를 움직여서 팔의 각도의 최소 최대를 구한 후 joint에 적용시킨다
    • 공기 저항이 낮으면 팔이 계속해서 움직이기에 Drag 값을 10정도 주는게 좋아보인다.

Script Graph

  • state machine / script machine
  • 코딩으로 설계 하는 것 처럼 자잘자잘한 오류가 잘 없음
  • 하지만 순서는 코딩과 비슷하다
  • 논리 연산, 그 외에 어떤 변수가 호출 되면 그 변수에 대해서 Event를 실행
  • 변수에 관해서는 기본적으로 Get / Set
  • 대신, Name칸 잘 맞춰 넣어야함
  • Game Manager를 통해서 List 목록을 받을 수 있음
  • Get List Item과 함께 사용
  • Index에 들어갈 번호는 상황에 맞게
  • Scean 전체에 저장된 내용을 가져 올 수 있고
  • Saved 실행 되었던 것으로 부터~ 실행 되고 있는 것까지 다 받아 올 수 있음
    • 점수 기록, 데이터 저장 등
  • Object의 변수들도 가져올 수 있다

유튜브 추천

반응형