우선 Sequence는 단일 객체가 아닌,다수의 객체에 대한 여러 트윈을 하나로 묶고등록한 순서대로 트윈을 재생하기 위해 사용합니다. Sequence sequence;Sequence는 변수 선언 시 null 상태입니다. sequence = DOTween.Sequence(); static으로 선언된 생성자가 있습니다.이 생성자를 통해 Sequence를 만듭니다. 시퀀스는 생성 즉시 자동으로 재생됩니다. sequence = DOTween.Sequence().Play();Play()를 사용해 시퀀스를 재생할 수 있지만 자동 재생입니다. sequence = DOTween.Sequence().Pause();이를 원치 않으면 트윈을 추가하면서 동시에 재생을 중단해야 합..
0. 코드전문using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using DG.Tweening;[RequireComponent(typeof(Canvas))]public class InfoUIController : MonoBehaviour{ readonly Queue infoUIs = new Queue(); public Image prefab; Image currentInfo = null; [SerializeField, Header("시작 위치")] RectTransform startPosition; [SerializeField, Header("목표 위치")] RectTransform tar..
0. 코드 전문123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166..
1. 덱과 카드 관리먼저 Mirror에서Command나 ClientRpc 등의 속성을 가진 메서드를 사용할 때class의 인스턴스를 매개변수로 전달할 수 없습니다.기본적으로 직렬화 가능한 기본 자료형(int, float, string, bool)만 주고 받을 수 있기 때문입니다.대신 카드 오브젝트를 int 형 ID로 주고받을 수 있습니다. using UnityEngine;public class Card : MonoBehaviour{ // 카드의 고유 ID (외부에서 수정 불가, 읽기 전용) public int Id { get; private set; } // 카드의 이름 public string cardName; // 카드 ID를 설정할 수 있는 초기화 메서드 public..
1. 특정 인원을 만족하면 게임을 시작하기Unity Mirror 라이브러리를 사용하여 멀티 플레이 환경을 제작하고 있습니다.NetworkManager를 사용하여 Game Scene에서 4명의 플레이어가 접속하면 게임이 시작되게 할 것입니다. GameManager에서 생성된 플레이어의 수를 int 값으로 기록하고 저장합니다.플레이어 객체가 생성되면 Start() 메서드로 GameManager의 int 값을 +1 합니다.그리고 그 수가 4가 된다면 게임을 시작하기 위한 메서드를 실행합니다.using UnityEngine;using Mirror;public class GameManager : NetworkBehaviour{ // 접속된 플레이어 수를 서버에서 관리하기 위한 네트워크 동기화된 변수 [..
포트폴리오용 1인 게임 개발 프로젝트를 시작했습니다.학원에서의 마지막 작업일 듯합니다.작업 기한은 ~2024.10.04 입니다.주제는 창작 카드게임입니다.4명이서 플레이할 수 있도록 네트워크 통신까지 추가할 계획입니다. 그런데 카드 게임이란게 비주얼적인 부분이 빈약해서 다른 게임에 비해 초라하다고 생각하고 있습니다...그에 비해 다른 학생들은 애니메이션이나 쉐이더의 재미에 쏙 빠진것 같아 보이는데,과연 로직이라도 훌륭하게 완성하여 내실이라도 튼튼한 프로젝트가 될지 걱정입니다... 기능정의서Unity의 Mirror 라이브러리를 사용하여 4인 멀티 카드 게임을 제작합니다.4명의 플레이어가 모일 때까지 대기합니다. 필요한 인원이 모이면 게임을 시작할 수 있습니다.NetworkRoomManager를 활용하여 로..
NetworkRoomManager에서 Start Host나 Start Client를 실행하면Offline Scene에서 Online Scene으로 이동합니다.이후에 벌어지는 일을 정리해봅니다. Online Scene으로 이동하면 NetworkRoomPlayer 객체가 생성됩니다.객체의 Start 구문에서 DontDestroyOnLoad(gameObject)가 실행됩니다. 그리고 싱글톤이 된 NetworkRoomManager의 RoomSlots에 자신을 추가합니다. RoomSlots은 NetworkRoomPlayer형 HashSet입니다.( HashSet : 중복 값을 허용하지 않는 고유한 값의 컬렉션)NetworkRoomManager의 RoomSlots을 조회하면 원하는 플레이어를 호출할 수 있겠습니다..
이제 잔상을 남길 수 있습니다. SkinnedMeshRenderer의 BakeMesh 메서드만 이해한다면 누구나 잔상을 만들 수 있습니다. 현재 SkinnedMeshRenderer가 참조하는 Mesh의 모습을 그대로 복제하여,매개변수의 Mesh mesh에 할당하는 식인가 봅니다. 이 작동 원리를 이해했다면 구현 방식을 쉽게 생각 해볼 수 있습니다.바로 잔상의 Mesh를 가진 객체를 계속 생성하는 것입니다. 1. 잔상을 남기고 싶은 순간마다 객체를 생성합니다. 객체에는 Mesh Filter와 Mesh Renderer가 필요하겠습니다.2. Mesh Filter에는 아까의 BakeMesh 메서드로 복제한 메쉬를, Mesh Renderer에는 복제한 메쉬가 사용할 Material을 할당합니다.3. 시간이 지나면..