Unity Engine

· Unity Engine
///////////////////////// Player Action ///////////////////////// public PlayerInput input; [NonSerialized] public Vector3 moveVec; private InputAction _normalMoveAction; // private InputAction _specialMoveAction; public bool disableMove; public bool disableAction; public float moveSpeed; public float defaultSpeed = 30.0f; private float defaultDashTime = 0.2f; [NonSerialized] public float moveSp..
· Unity Engine
전투 Scene 위주로 구현하다가, 이제 타이틀 Scene에서 무기, 케릭터등을 선택하면, 선택한 데이터(오브젝트)들이 전투 Scene에서 사용될 수 있도록 간단하게 테스트용으로 코드롤 짰다. 데이터는 잘 넘어왔고 전투 Scene도 문제없이 재생되고 있었다. 전투 Scene 재생 중에, 만약에 Player가 죽으면 현재 Scene을 다시 Load하도록 코드를 짰는데, 갑자기 아래와 같은 처음보는 오류가 발생하였다. MissingReferenceException: The object of type 'PlayerController' has been destroyed but you are still trying to access it. Your script should either check if it is ..
· Unity Engine
public class FlashSprite : MonoBehaviour { [SerializeField] private SpriteRenderer originalSprite; [SerializeField] private Material flashMaterial; [SerializeField] private float duration; [SerializeField] private int reapeatFlashNum = 1; private SpriteRenderer spriteRenderer; private Material originalMaterial; private Coroutine flashCoroutine; private void Start() { if (this.originalSprite != n..
· Unity Engine
https://shlifedev.gitbook.io/unitygooglesheets/ Unity Google Sheet - UGS 개발문서 WebGL, Linux, Windows, Android(Il2cpp/AOT), iOS, Xbox,Ps4와 같은 모든 플랫폼을 지원합니다. shlifedev.gitbook.io 위는 구글스프레드시트를 프로젝트에 적용시킬 수 있는 Asset이다. 무료로 사용할 수 있다. 보통 게임 데이터 저장/로드할 때, CSV, Json, Scriptable Object등 사용되는데, 구글 스프레드 시트또한 사용될 수 있다. 구글 스프레드 시트와 이 Asset을 사용했을때 장 점으로는 온라인으로 스프레드 시트를 협업하는 사람들 모두가 참조, 변경할 수 있기 때문에 협업에서 효율적으로 ..
· Unity Engine
InputAction은 Unity에서 제공하는 비교적 최근에 생긴 입력 시스템의 일부로, 사용자 Input을 처리하는 데 사용된다. 이 시스템은 게임 컨트롤러, 키보드, 마우스 및 터치 입력과 같은 다양한 플랫폼의 입력 방식을 지원합니다. InputAction은 사용자 Input을 감지하고 해당 입력에 대한 Event를 트리거하는 데 사용된다. 그래서 처음에 유니티를 배울때는 Input.GetKey~ 종류의 Method를 사용했었다. 이게 간단하게 바로바로 사용할 수 있으니 자주 썻었다. 물론 지금도 개발중인 게임이 다른 플랫폼 지원이고 뭐고 하는게 아니라 단순 연습용이다보니, 굳이 안써도 되는데, 한번 공부해보려고 InputSystem을 열심히 써보면서 개발중이다. InputAction은 기본적으로 입..
· Unity Engine
-Static static 키워드는 클래스 멤버나 메서드에 사용되어 해당 멤버나 메서드가 클래스의 인스턴스 없이 호출되도록 한다. static 키워드가 붙은 멤버는 인스턴스가 아니라 클래스 자체에 속하게 되므로, 해당 멤버는 클래스의 모든 인스턴스에서 공유됩니다. static 키워드를 사용한 변수는 클래스가 메모리에 올라갈 때 자동으로 생성이 된다. 이에따라 해당 멤버나 메서드가 클래스의 인스턴스 없이 호출될 수 있도록 하여, 클래스의 모든 인스턴스에서 공유된다 . -Singleton Class 이에따라 개발을 하다보면, 게임 시스템을 관리하는 기능들이 필요할 수가 있다. 예를들어, 뱀서라이크, 슈팅게임 등 오브젝트 생성과 파괴가 빈번할 작업을 Object Pooling을 통해 메모리 관리를 효율적으로 ..
· Unity Engine
- 인스펙터 창 유니티에서, 인스펙터창에 스크립트 내에서 변수를 띄우긴 위해서는 public을 사용하거나, [SerializeField]를 붙여주면 된다. 처음 공부할 때는, 스크립트(클래스)도 여러개가 아니고, 각각 따로따로 작성하다보니 아무생각없이 인스펙터에서 변수들을 띄우기 위해 public을 사용했다. 하지만 public은 단순히 인스펙터창에 변수를 띄우기만을 위해 사용하는 것은 좋지 않은 습관이라 생각한다. (참고로 [HideInspector]를 이용하면, public을 써도 인스펙터에서 보이지 않는다) -참고 : 직렬화 규칙 (https://docs.unity3d.com/kr/2020.3/Manual/script-Serialization.html) 1. public이거나 SerializeFie..
· Unity Engine
최적화 관련 여러 정보들을 취합해서 정리 출처 : https://rito15.github.io/posts/unity-opt-script-optimization/#list-%EC%82%AC%EC%9A%A9%ED%95%A0-%EB%95%8C-%EC%A3%BC%EC%9D%98%ED%95%A0-%EC%A0%90 1. GetComponent GetComponent의 잦은 사용이 성능에 유의미한 영향을 주는지에 대한 의견이 분분하긴 한데, 여러 자료를 보면서 내린 결론은 아래 예시의 정도는 필수이고, 그 외에 상황에서 사용하는 것은 굳이 지양하지 않아도 된다 생각한다. public GameObject player; private void Update() { player.GetComponent().Example();..
SB_J00N
'Unity Engine' 카테고리의 글 목록