본문 바로가기

728x90
반응형

유니티

(23)
[유니티] Photon Warnings / PUN is in development mode (development build). As the 'dev region' is not empty (jp) it overrides the found best region. See PhotonServerSettings. Warning 아래와 같은 경고가 발생 PUN is in development mode (development build). As the 'dev region' is not empty (jp) it overrides the found best region. See PhotonServerSettings.UnityEngine.Debug:LogWarning (object)Photon.Pun.PhotonNetwork:OnRegionsPinged (Photon.Realtime.RegionHandler) (at Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs:2546)Photon.Realtime.MonoBehaviourEmpty:Update () (at..
[유니티] Color, 오브젝트 페이드 아웃(FadeOut), 페이드 인(FadeIn) Color Renderer 컴포넌트를 통해서 오브젝트의 color에 접근할 수 있다. color에는 R, G, B, A 값이 존재하며 RGB는 색상, A는 투명도를 의미한다. 또한 유니티에서는 다음과 같은 색상과 관련된 정적 변수를 제공하고 있다. 이를 활용하여 오브젝트의 색상을 변경하는 코드를 작성해 볼 수 있다. Renderer MyRenderer; void Start() { MyRenderer = gameObject.GetComponent(); } void Update() { if (Input.GetKeyDown(KeyCode.R)) MyRenderer.material.color = Color.red; if (Input.GetKeyDown(KeyCode.G)) MyRenderer.material.c..
[유니티] Find, 다른 오브젝트의 스크립트 접근 Find 특정 스크립트에서 둘 이상의 오브젝트를 구분하여 접근하기 위해서는 Find 메서드가 필요하다. Find 메서드로 찾은 오브젝트를 담을 변수를 하나 선언한 후 그 변수에 오브젝트를 할당해주면 된다. Find 메서드로 오브젝트를 할당해주었다면 우리는 오브젝트는 물론이고 오브젝트에 적용된 스크립트의 변수나 메서드, 컴포넌트까지도 접근할 수 있다. ground 오브젝트에 GroundSc 라는 스크립트가 적용되어 있고 GroundSc 스크립트에는 public int 형의 num 변수가 선언되었다고 해보자. public class PlayerMove : MonoBehaviour { GameObject ground; // Start is called before the first frame update vo..
[유니티] SetActive, Destory 차이점 SetActive와 Destory 메서드의 차이점 두 메서드 모두 오브젝트를 없앤다는 관점에서 유사하다고 볼 수 있다. 그러나 두 메서드에는 차이점이 존재하는데 이는 직관적으로 이름에서도 알 수 있다. SetActive SetActive 메서드는 말 그대로 오브젝트를 비활성화 하겠다는 의미이다. 오브젝트가 보유한 자식, 스크립트, 종속된 변수 등은 그대로 유지된다. 이후 다시 사용하고 싶을 때 SetActive 메서드로 다시 활성화시키면 비활성화시키기 이전의 상태 그대로 다시 사용 가능하다. SetActive 메서드 사용법은 다음과 같다. gameObject.SetActive(false); SetActive 메서드에 false를 전달하면 비활성화되고 true를 전달하면 활성화된다. Destory Dest..
[유니티] 프레임 고정 문제상황 연습 프로젝트를 만들던 중 프로젝트가 점점 커지기 시작하니 문제가 발생했다. 게임을 진행할수록 캐릭터가 이동하는 속도가 떨어지는 것이었다. Debug.Log(Time.deltaTime); 으로 확인을 해보니 deltaTime 이 0.01~0.02까지 올라가는 것이다. 실제로 CPU, GPU 사용량이 높지는 않았지만 엔진자체에서 너무 많은 자원을 낭비하고 있다고 판단하여 프레임을 낮추는 것인가 싶었다. 프레임 고정 그래서 프레임 고정을 하는 방법이 뭐냐? 아래 코드를 Start 함수에 한 줄만 추가해주면 된다. Application.targetFrameRate = 30; 나는 높은 프레임이 필요하지 않아서 30프레임으로 고정했다.
[유니티] 코루틴 (Coroutine) 코루틴 (Coroutine) 코루틴은 Update 함수와 별개로 동작하는 함수이다. Update 함수는 매 프레임마다 호출되기 때문에 1초마다 수십번의 호출이 발생한다. 그러나 그렇게 많은 호출이 요구되지 않는 코드들이나 Update 함수와 별개로 작동하는 코드들은 코루틴을 사용하여 처리할 수 있다. 코루틴 함수 작성 코루틴 함수는 IEnumerator 반환형으로 선언해야하며 yield return 값이 필요하다. Update 함수와는 다르게 프레임을 기준으로 동작하는 것이 아니라 시간을 기준으로 동작하기 때문에 yield return 값으로는 시간을 지정해주어야한다. 코루틴 함수의 형태는 아래 코드와 같다. IEnumerator FunctionName() { yield return // return v..
[유니티] FixedUpdate Update Update 함수는 어떤 함수도 실행되고 있지 않을 때 바로 실행된다. 따라서 함수의 처리속도에 따라 호출 빈도가 변동될 수 있고 이로 인해 초당 프레임(Frame Per Second)이 고정적이지 않거나 프레임 드랍이 일어날 수 있다. 이런 이유들로 인해 물리함수가 제대로 작동하지 않거나 물리 계산의 정확도가 떨어질 수 있다. FixedUpdate 그러나 FixedUpdate 함수는 Update 함수와는 다른 방식으로 호출된다. 일정한 시간을 정해놓고 정해진 시간마다 호출된다. 프레임과는 별개의 움직임을 갖는 것이라고 생각하면 될 것 같다. 따라서 Update에서 한 프레임의 처리 속도를 의미하는 deltaTime이 FixedUpdate 에서 정해놓은 시간인 Fixed TimeStep 보다..
[유니티/연습 프로젝트] 몬스터 스폰, 피격, 처치 구현 몬스터 HP바 Canvas위에 Image 2개를 생성하여 HP바를 구현하였다. HP바가 항상 몬스터의 머리 위에 떠있게 유지시키기 위해서 몬스터의 좌표를 Canvas좌표로 변환하여 두 개의 Image에 전달해주었다. public class EnemyMove : MonoBehaviour { public float hp; public RectTransform HpBar; public RectTransform HpBarBackGround; // Start is called before the first frame update void Start() { hp = 10; } // Update is called once per frame void Update() { HpBar.position = Camera.mai..

728x90
반응형