02/19 본캠프 #38

guno park·2024년 2월 19일
0

본캠프

목록 보기
38/77

강의 질문 정리

[field: SerializeField] vs [SerializeField]

  • [SerializeField] = 프로퍼티가 없는 Private var Variable에 적용하여 인스펙터로 직렬화 가능
  • [field: SerializeField] = 프로퍼티가 {get; private set;} 같은 경우 일반적인 [SerializeField]로 직렬화 불가능, [field: SerializeField]를 선행해야 인스펙터에서 수정이 가능하다.

트러블 슈팅 - 공격 1타에서 전환이 안됨.

내용 : 애니메이션이 계속 반복되서 1이되지 않고있음.
원인 : 애니메이션 이름이 달라서 문제가 됬음. (Animator : Combo, 스크립트 : combo)

Unity 게임 개발 심화 강의

11강 - 적 만들기

기본적으로 플레이어와 비슷하게 작성하지만, 세부 State를 다르게 작성한다.
상태별로 동작할 것도 다르게 구성해야한다.

12강 - 피격 만들기

  • Weapon은 충돌체를 가지고 충돌처리를 한다.
    빈 콜라이더에 트리거를 이용해 충돌하는데, 콜라이더의 리스트로 만들어서 충돌한 오브젝트를 모두 검출하고,
    TryGetComponent를 이용해서 따로 태그로 검사하지 않도록 작성되었다.

13강 - 게임 빌드 프로세스의 이해

  • 빌드? 개발한 게임을 파일로 변환하는 과정
  1. 'File' > 'Build Settings'로 이동합니다.
  2. 'Platform' 목록에서 'Windows'를 선택하고, 'Switch Platform'을 클릭합니다.
  3. 원하는 씬을 'Scenes in Build' 목록에 추가합니다.
  4. 'Player Settings'에서 게임의 설정을 변경할 수 있습니다. (예: 회사 이름, 게임 아이콘 등)
  5. 'Build' 버튼을 클릭하여 빌드를 시작합니다.
  • 유의사항
    • Windows 빌드는 Windows 운영체제에서만 실행됩니다.
    • 빌드 과정에서 발생할 수 있는 문제들, 예를 들면 플러그인 호환성 이슈 등을 확인해야 합니다.

빌드 설정에서 안드로이드는 회사 이름과 제품 이름이 고유값을 사용하기 때문에 중복처리가 일어나지 않는다.
따라서 고유한 이름을 가지도록 만들어주어야한다.

14강 - 포톤

네트워크 엔진으로 멀티플레이 기능을 쉽게 추가할 수 있음

특징

  • Cross-platform: 포톤은 다양한 플랫폼 간에 통신을 지원합니다. 이는 PC, 모바일, 콘솔 게임에서 멀티플레이어를 지원하게 해줍니다.
  • Real-time, Multiplayer: 포톤은 실시간 멀티플레이어 게임 개발에 초점을 맞추고 있습니다.
  • Scalability: 포톤은 클라우드 기반 서버를 사용하여 게임의 플레이어 수에 따라 자동으로 확장되는 기능을 제공합니다.
  • Reliability: 포톤은 데이터 전송에 대한 높은 신뢰성을 제공합니다.

자주 사용되는 메서드

  • PhotonNetwork 클래스

    ConnectUsingSettings
    메서드 앱이 포톤 클라우드에 연결됩니다.
    연결 상태는 PhotonNetwork.IsConnected로 확인할 수 있습니다.
    CreateRoom 및 JoinRoom 메서드
    CreateRoom 메서드는 새로운 방을 만들고, JoinRoom 메서드는 이미 존재하는 방에 참가
    Instantiate 메서드
    포톤 네트워크를 통해 새로운 게임 오브젝트를 생성합니다.
    이 메서드는 Unity의 Instantiate 메서드와 유사하나, 네트워크를 통해 동기화됩니다.
    OnConnectedToMaster 메서드
    게임이 포톤 마스터 서버에 성공적으로 연결되면 호출됩니다.
    OnJoinedRoom 메서드
    로컬 플레이어가 방에 입장하면 호출됩니다.
    OnPlayerEnteredRoom 메서드
    다른 플레이어가 방에 입장하면 호출됩니다.

컴포넌트 소개

동기화 하기 위한 오브젝트에는 PhotonView 컴포넌트를 모두 달아주어야함.

  1. PhotonView

    PhotonView는 포톤 네트워크에서 네트워크 상태를 동기화하는 데 사용
    이 컴포넌트를 통해 PhotonNetwork.Instantiate를 사용해 생성된 객체가 네트워크를 통해 동기화됩니다.
    PhotonView는 주로 Transform 컴포넌트나 사용자 정의 스크립트와 같이 동기화하고자 하는 컴포넌트를 참조합니다.

  2. PhotonTransformView

    PhotonTransformView는 위치, 회전, 및 크기를 동기화하는 데 사용되는 컴포넌트입니다. PhotonView에 추가하여 사용하며, 이 컴포넌트를 통해 게임 오브젝트의 움직임이 네트워크를 통해 동기화됩니다.

  3. PhotonAnimatorView

    PhotonAnimatorView는 Animator 컴포넌트를 동기화하는 데 사용됩니다. 이 컴포넌트는 PhotonView와 함께 사용되며, 애니메이션 상태와 변수를 동기화하는 데 사용됩니다.

  4. PhotonRigidbodyView

    PhotonRigidbodyView는 Rigidbody 또는 Rigidbody2D 컴포넌트를 동기화하는 데 사용됩니다. 이 컴포넌트는 움직임과 회전을 동기화하여 물리적 효과를 네트워크를 통해 동기화할 수 있습니다.

  • 보통 씬을 로드할 때 씬 매니저를 사용했지만, 멀티로 만들 때에는 포톤네트워크에서 해야된다. 안그러면 혼자 넘어가진다.

포톤 뷰에서 View ID가 중요함. 같은 애들끼리 동기화 시키기때문에 같이 묶일 애들 이외에는 값이 다르도록 해주어야한다.

IPunObservable

자동 동기화 말고 내가 원할 때 동기화

if (stream.IsWriting)
	{
	stream.SendNext(rigidbody.position);
	stream.SendNext(rigidbody.velocity);
  }
  else
  {
  rigidbody.position = (Vector2)stream.ReceiveNext(); 
  //소문자 object는 모든 애들의 최상위 클래스라고 보면됨.
  rigidbody.velocity = (Vector2)stream.ReceiveNext();
  }

Resources에서 로드하기

GameObject prefab = Resources.Load<GameObject>("Paddle"); 
//리소스 불러올 땐 제네릭으로 타입 지정 해주어야됨.

포톤 팁

  • 포톤은 패키지 자체에서 데모를 많이 제공해주기 때문에 샘플씬을 뜯어보면 좋다.

0개의 댓글