Unity(26)
-
유니티 매니저
1. 게임 매니저(Game Manager) 게임의 전반적인 상태를 관리합니다. 예를 들어, 게임의 시작, 종료, 일시정지, 재시작 등의 상태를 제어하고, 게임 오버와 승리 조건을 체크합니다. using UnityEngine; public class GameManager : MonoBehaviour { public static GameManager instance; private void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); } else if (instance != this) { Destroy(gameObject); } } public void StartGame() { // 게임 시작 로직 } pu..
2024.04.05 -
BoxCast
RaycastHit2D hit = Physics2D.BoxCast(transform.position, new Vector2(0.99f, 0.1f), 0f, Vector2.down, 0.5f, groundLayer); void OnDrawGizmos() { Gizmos.color=Color.red; Gizmos.DrawCube(transform.position-transform.up * 0.5f, new Vector2(0.99f, 0.1f)); } using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { Rigidbody2D rigid; SpriteRend..
2023.02.21 -
오브젝트 풀링
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PoolManager : MonoBehaviour { // 프리펩 보관 public GameObject[] prefabs; // 풀 담당하는 리스트 List[] pools; // List 변수이름 = new List() 형태로 선언 void Awake() { pools = new List[prefabs.Length]; for(int index = 0; index < pools.Length; index++){ pools[index] = new List(); } } public GameObject Get(int index) // void 대신 G..
2023.01.26 -
mirror 네트워크
참고 관련 https://blog.naver.com/PostView.naver?blogId=mshan2923&logNo=222376997001&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView https://www.youtube.com/watch?v=ytGYUage58Y&list=PLkx8oFug638oBYF5EOwsSS-gOVBXj1dkP&index=4 유니티 에셋 스토어에서 Mirror 추가 https://assetstore.unity.com/packages/tools/network/mirror-129321?locale=ko-KR 그 후 유니티 패키지 매니저에서 갖고와서 사용하면 됨 1. 씬에 Create Em..
2022.09.11 -
Mixamo
https://www.mixamo.com/ 위의 사이트에서 3D 캐릭터 모델과, 애니메이션을 무료로 제공해줌 제공되는 파일을 유니티에 적용하는 방법을 소개 캐릭터 모델 사용 방법 1. Mixamo 홈페이지 상단 Characters 탭을 클릭 후 원하는 캐릭터를 선택 2. 우측상단에 다운로드 버튼을 누르면 레이어 팝업(DOWNLOAD SETTINGS)이 뜸 3. 레이어 팝업창에서 Format을 FBX for Unity(.fbx) 선택. 포즈는 원하는 포즈 선택. 4. 레이어 팝업창에서 다운로드 버튼 클릭 5. 다운받은 캐릭터 모델을 유니티 Assets 폴더에 원하는 하위경로로 이동 6. Project창에서 다운받은 모델을 선택 후 Inspector창에서 설정할 것들이 있음 6-1. Rig탭의 Animati..
2022.07.02 -
메모리 관리
가비지 컬렉션 비활성화을 비활성화한 후, 게임이 멈추거나 로딩되는 화면에서 한번씩 부르거나, 아래 코드처럼 일정주기 마다 한번씩 가비지 컬렉션 실행 if (Time.frameCount % 30 == 0) { System.GC.Collect(); }
2022.06.27 -
애니메이터
Animator anim; void Awake() { anim = GetComponent(); } void 특정함수(){ anim.SetBool("유니티 애니메이터 창에서 설정한 값", false); anim.SetInteger("유니티 애니메이터 창에서 설정한 값", (int)value); anim.SetTrigger("유니티 애니메이터 창에서 설정한 값"); }
2022.06.16 -
파일 불러오기
Assets/Resources 폴더가 있어야 함 //Load a text file (Assets/Resources/Text/textFile01.txt) TextAsset textFile = Resources.Load("Text/textFile01"); //Load text from a JSON file (Assets/Resources/Text/jsonFile01.json) TextAsset jsonTextFile = Resources.Load("Text/jsonFile01"); //Then use JsonUtility.FromJson() to deserialize jsonTextFile into an object //Load a Texture (Assets/Resources/Textures/texture..
2022.06.16 -
게임오브젝트 불러오기
// 이름으로 불러오기 GameObject.Find("Name"); // 이름으로 불러온 오브젝트의 스크립트 내 함수 호출 GameObject bObject = GameObject.Find("GameManager"); GameManager bScript = bObject.GetComponent(); bScript.test(); // 태그명으로 불러오기 GameObject.FindWithTag("TagName");
2022.06.16 -
스태틱
정적변수 // 1번 스크립트 파일 public class 클래스이름{ // 정적 변수 선언 - 여러 게임오브젝트에 넣어도 되고, 어떤 게임오브젝트에도 안넣어도 됨 public static int 정적변수; } // 2번 스크립트 파일 위에 변수를 아래처럼 불러와서 사용 가능 클래스이름.정적변수; 정적함수 // 1번 파일 public class StaticTestClass{ public static int score; // 정적변수 public int memberInt; public static void StaticFunction(){ //정적함수 score = 10; // static 변수는 호출할 수 있다. memberInt = 10; // static 함수 내에서 멤버변수는 호출할 수 없다. } } ..
2022.06.16 -
킵입력
// 이벤트 종류 Input.GetKey(키코드) Input.GetKeyDown(키코드) Input.GetKeyUp(키코드) // 키코드 UpArrow, DownArrow, RightArrow, LeftArrow // 사용법 if(Input.GetKeyDown(UpArrow)){} Input.GetButton(세팅값) Input.GetButtonDown(세팅값) Input.GetButtonUp(세팅값) //세팅값 Horizontal, Vertical, Jump, Fire1 등 // -1 ~ 1 사이값을 반환. 만약 정수만 반환시 밑에 세팅에서 sensitivity 낮게 설정 Input.GetAxis("Horizontal") // -1,0,1 반환 GetAxisRaw("Horizontal") // "Hor..
2022.06.16 -
타이머
인보크 Invoke("Think", nextThinkTime); void Think(){ //do something } 코루틴 - 여러개의 엔트리 포인트를 두어 여러패턴으로 시간간격을 컨트롤 할 수 있다 void Start (){ StartCoroutine ( Function_name() ); // 인자값이 없을 경우 "함수명"으로도 실행 가능 StartCoroutine ( "Function_name" ); } IEnumerator Function_name(){ for(;;) // or while(1 or true){ yield return new WaitForSeconds(n); //n초 쉬는 함수. n초에 한번 실행되는 루틴 } }
2022.06.16 -
이동
트랜스폼(직접 이동) + 벡터 - 벽으로 이동시 흔들리는 문제있음 void Update(){ Vector3 moveVelocity = Vector3.zero; if(Input.GetAxisRaw("Horizontal") 0){ moveVelocity = Vector3.right; } transform.position += moveVelocity * 3 * Time.deltaTime; } 트랜스폼(직접 이동) - 벽으로 이동시 흔들리는 문제있음 void Update(){ if(Input.GetAxisRaw("Horizontal") < 0){ transform.Trans..
2022.06.16 -
색변경
// 변수 선언 SpriteRenderer spriteRenderer; // awake나 start에 추가 spriteRenderer = GetComponent(); // 색상도 다룰 수 있음 r,g,b,투명도 spriteRenderer.color = new Color(1,1,1,0.4f);
2022.06.16 -
좌우반전
// 변수 선언 SpriteRenderer spriteRenderer; // awake나 start에 추가 spriteRenderer = GetComponent(); // x축 반전 spriteRenderer.flipX = nextMove == 1; // x, y, z 축. 아래는 x축 기준으로 반전 (오른쪽 보고 잇는 캐릭터가 왼쪽 보게 됨) transform.localScale = new Vector3(-1,1,1);
2022.06.16