우선 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..
이제 잔상을 남길 수 있습니다. SkinnedMeshRenderer의 BakeMesh 메서드만 이해한다면 누구나 잔상을 만들 수 있습니다. 현재 SkinnedMeshRenderer가 참조하는 Mesh의 모습을 그대로 복제하여,매개변수의 Mesh mesh에 할당하는 식인가 봅니다. 이 작동 원리를 이해했다면 구현 방식을 쉽게 생각 해볼 수 있습니다.바로 잔상의 Mesh를 가진 객체를 계속 생성하는 것입니다. 1. 잔상을 남기고 싶은 순간마다 객체를 생성합니다. 객체에는 Mesh Filter와 Mesh Renderer가 필요하겠습니다.2. Mesh Filter에는 아까의 BakeMesh 메서드로 복제한 메쉬를, Mesh Renderer에는 복제한 메쉬가 사용할 Material을 할당합니다.3. 시간이 지나면..
오목 검출 알고리즘을 생각하던 중에문득 RaycastAll로 검출된 RaycastHit 배열의 요소가Ray의 시작점으로부터 가까운 순으로 반환되는지 궁금해져서 실험해 봤다. 생각대로 될 리가 없지 ㅋㅋㅋ 혹시나 했던 역시나, 뒤죽박죽으로 배열에 담겨 반환되었다. 그럼 거리 순으로 정렬하면 어떨까? System.Array.Sort(hits, (hit1, hit2) => hit1.distance.CompareTo(hit2.distance)); List를 사용할 때 Sort를 그저 오름차순 정렬에만 사용해서 몰랐는데,System.Array.Sort는 람다함수와 병행하면정렬할 수 없는 사용자 정의 객체를비교 메서드를 사용하여 기준에 따라 정렬할 수 있다. 7개의 큐브가 거리 순으로 정렬되었다. 이것이 Arr..
위의 이미지에서 키보드 a 와 d 자판은 Horizontal 이라는 이름의 버튼으로 할당 되어있다.여기서 Input.GetAxis("Horizontal")를 사용하면 -1 에서 1 까지의 float 값을 반환 받을 수 있다.이것에 관한 설정은 이하의 설정을 따르는데,키가 입력되면 Sensitivity에 설정한 만큼 값이 서서히 -1이나 1에 도달한다.그러다 입력이 중단되면 Gravity에 설정한 만큼 값이 서서히 0으로 되돌아간다.그러다 Dead에 설정한 값에 도달하면 입력이 없는 것으로 한다. 사람들은 Input.GetAxis를 Horizontal이나 Vertical 과 같이 캐릭터의 조작에 사용한다. transform.position += new Vector3(Input.GetAxis("Horizo..
Unity의 Application 클래스는 애플리케이션의 여러 정보와 경로를 관리하는 데 사용됩니다. 특히 파일 시스템과 관련된 경로를 다루는 메서드와 속성을 제공합니다. 여기에는 다양한 경로 종류가 있습니다:1. Application.dataPath설명: 프로젝트의 Assets 폴더가 있는 경로입니다.사용 예시: 주로 리소스 로드나 파일 쓰기와 같은 작업에 사용됩니다.예제:csharp코드 복사string path = Application.dataPath + "/Resources/myResource.txt";2. Application.persistentDataPath설명: 애플리케이션의 영구 데이터를 저장할 수 있는 경로입니다. 이 경로는 앱의 사용자 데이터를 저장하는 데 사용됩니다.사용 예시: 사용자 ..
프로그램에서 배열은 연속된 메모리 공간에 순차적으로 저장된 데이터의 모음입니다. 이들은 Array, List, ArrayList 라고하는 컬렉션 타입들로,비슷한 방법으로 사용하지만 각자 고유한 특징이 있습니다. 1. Array먼저 Arrray에 대해 집고 넘어가야 하는 것이,이를 기준으로 다른 타입들의 추가적인 특징이 나타난다고 볼 수 있기 때문입니다.Array 타입은 선언 시 배열의 크기가 고정됩니다. 동적으로 크기를 변경할 수는 없고, 필요한 크기의 새 배열을 만들어 새로 할당해서 써야 합니다. 또한 int 배열에는 int 값만 저장할 수 있습니다.이는 데이터 타입을 제한한다고 볼 수 있지만 반환하는 데이터 타입의 안전성을 보장한다고도 볼 수 있습니다. int 형의 데이터 크기가 4바이트이므로..