유니티/유니티 코드
-
싱글톤 (Singleton Pattern)유니티/유니티 코드 2024. 4. 26. 16:27
싱글톤 : 프로그래밍 디자인 패턴 중 추상 객체 인스턴스 생성 패턴중의 하나로 1. 게임 시스템에서 전체를 관장하는 스크립트(단일 시스템 자원 관리 차원)2. 게임 시스템상 전역 변수의 역할을 하는 스크립트3. 씬 로드시 데이터가 파괴되지 않고 유지4. 여러 오브젝트가 접근을 해야 하는 스크립트의 역할5. 단 한개의 객체만 존재 이렇게 5가지의 특성을 지니고 있다 특히 3번 같은 경우 새로운 씬을 로드하더라도싱글톤만큼은 다른 변수들처럼 파괴되는것이 아닌 자신이 가진 데이터들을 함께 유지한다 using System.Collections;using System.Collections.Generic;using UnityEngine;public class GameManager : MonoBehaviour{ ..
-
Vector3.Reflect유니티/유니티 코드 2024. 3. 19. 17:08
지정된 법선을 사용하여 표면을 벗어난 백터의 반사를 계산하는 함수 Vector3.Reflect(반영하려는 들어오는 벡터의 방향, 입력 벡터가 반사될 표면의 법선 벡터)incoming이 (1,1)normal(법선벡터)이 (0,1) 혹은 (0,-1)이다. Reflect될 때 법선 벡터에 수직인 평면에 대해 대칭이기 때문에 법선 벡터의 방향을 뒤집어도 결과가 변경되지 않는다 그러므로 Vector3.Reflect(incoming, normal)의 결과는 (-1,1)이 되는것이다
-
Collision.Contact[]유니티/유니티 코드 2024. 3. 19. 16:35
Collision 타입은 충돌 지점들의 정보를 담는 ContactPoint 타입의 데이터를 contacts[] 라는 배열의 형태로 제공한다 private void OnCollisionEnter2D(Collision2D coll) { // 충돌 시 이전 속도의 벡터 크기를 이용하여 반사 후 속도를 계산하고, 속도를 감속시킵니다. Vector2 dir = Vector2.Reflect(lastVelocity.normalized, coll.contacts[0].normal); float speed = lastVelocity.magnitude; // 이전 속도의 크기를 사용 rigid.velocity = dir * Mathf.Max(speed..
-
코루틴 (Coroutine)유니티/유니티 코드 2024. 2. 14. 15:22
유니티에서 정말 중요한 역할을 하는 코루틴. 생각해보니 코루틴에 대해서도 확실하게 짚고 넘어간게 없어 정리해둔다 Unity Documentation에 있는 사전적 정의이다. 사실상 가장 중요한 코루틴의 핵심 요소는 이 3가지로 정의 가능하다 1. 작업을 다수의 프레임에 분산2. 실행을 중단한 부분에서 다음 프레임을 계속할 수 있는 메서드3. 시간의 흐름에 따른 이벤트의 시퀀스, 절차상 애니메이션 표현 가능 이것만 봐서는 뭔가 이해가 될것 같으면서도 무슨 말인지 잘 모르겠다. 하지만 이 예시를 보자void Fade(){ Color c = renderer.material.color; for (float alpha = 1f; alpha >= 0; alpha -= 0.1f..
-
foreach유니티/유니티 코드 2024. 2. 14. 01:03
어떻게보면 for, while, do~while 문과 함께 가장 많이 쓰이는 반복문 중 하나이다 이 시점에서 foreach문을 다루는건 너무 늦는게 아닌가 싶지만그래도 그냥 넘어가는것과 확실하게 짚고 넘어가는것은 차이가 크기에 짚고 넘어가겠다 public int[] num = new int[5];void Start(){ num[0] = 0; num[1] = 1; num[2] = 2; num[3] = 3; num[4] = 4; foreach(int idxnum in Num) { Debug.Log(idxnum); } 위 코드처럼 foreach문은 변수를 배열에 담아 배열에 담긴 변수들을 반복시켜주는 반복문이다 여기서 foreach문과 함께 정의된..
-
딕셔너리 (Dictionary)유니티/유니티 코드 2024. 2. 13. 22:55
딕셔너리 : 데이터를 구별할 수 있는 Key와 데이터인 Value의 KeyValuePair의 타입을 저장하는 콜렉션 Key와 Value는 한 쌍으로 Key를 통해 Value값을 알 수 있고, 당연히 Key는 중복될 수 없다 선언 방식은 다음과 같다 Dictionary 이름 = new Dictionary(); Dictionary dic = new Dictionary(); => 왼쪽이 Key 오른쪽이 Value 이처럼 딕셔너리는 Key와 Value에 쓰일 두 개의 자료형이 필요하다. 이제 딕셔너리의 사용법을 알아보자 Add 메소드를 통해 Key와 Value를 저장한다Dictionary dic = new Dictionary();dic.Add(0,100);dic Add(0,5..
-
리스트 (List)유니티/유니티 코드 2024. 2. 13. 17:57
리스트 : 하나의 목록처럼 배열과 유사한 방식으로 데이터들을 저장하는 컨테이너배열 같은 경우는 크기가 생성 당시의 크기로 제한되기 때문에, 크기 변경을 위해서는 배열을 새로 만들어야 한다하지만 리스트는 배열의 크기가 동적으로 바뀌기 때문에 메모리가 허용하는 만큼 자동으로 늘어난다 또 데이터가 순차적으로 저장되는 *연속적인 특성을 가진다.* 연속적 : 데이터가 서로 연결되어 있어 다음 데이터의 주소지를 쉽게 찾아갈 수 있다. 또, 다음 데이터의 주소지를 알고 있기 때문에 반복문 사용에 적합하다 우선 List의 선언은 List 변수명 = new List(); ex) List num = new Lis..