NetworkBehaviour은 위와 같이 UnityEngine.Networking 클래스를 사용하며 MonoBehaviour을 상속받는다.


따라서, 이것을 사용하기 위해서는 다음과 같이 스크립트 코드를 추가 & 변경해줘야 한다.


using UnityEngine.Networking;

public class Player : NetworkBehaviour {



유니티에서 네트워크 관련 변수 또는 함수 사용을 위해서는 NetworkBehaviour를 사용해야 하기 때문이다.


유니티 네트워크를 사용하여 멀티플레이어 게임을 개발하기 위해서 꼭 필요한 설정이다.


이거 안 하면, 네트워크 관련 코드 그냥 다 못 쓴다.


자세한 목록은 


공식 홈페이지


에서 확인하고, 적절히 사용하도록 하자.

Posted by sungho88
,

[RequireComponent(type())]


보통 GetComponent는 대부분 자기 자신의 컴포넌트 중 하나를 가져와 사용한다.


자신에 부착돼있는 컴포넌트를 가져와 사용하려면 기본적으로, 다음과 같이 호출한다.


Rigidbody rigid = GetComponent<Rigidbody>();


보통 이런 목적으로 사용할 때는 Awake나 Start에서 미리 선언한 뒤 사용한다. 


하지만 Rigidbody 컴포넌트의 존재를 보장하지 않는다. 


무슨말이냐면, 실수로 Rigidbody를 게임오브젝트에서 지웠다면 null이 되어 실행 시, 문제가 발생된다.


그래서 엄격히 컴포넌트의 존재를 보장하고 싶을 때 RequireComponent를 사용한다.


사용방법은 다음과 같다. 클래스보다 위에 쓴다는 점. 명심하자.



[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(Collider))]

public class Bullet : MonoBehaviour
{



제법 깔끔하기도 하고 자주 사용하는 방법이다.


이렇게 되면, 이 게임오브젝트는 반드시 Rigidbody와 Collider를 갖고 있어야 한다는 의미이다.


따라서, 위 두 컴포넌트는 삭제할 수 없다. Delete해봐라. 그럼 아래와 같은 창을 볼 수 있다.



Bullet 스크립트가 Box Collide를 요구하고 있기때문에, 이것은 삭제할 수 없게 되므로 에러 발생 확률이 적어진다.






이렇게 인스펙터와 관련된 기능이 많다.



Posted by sungho88
,

Random.Range(0, 10);


이라는 명령어를 통해 0부터 9까지의 값들 중 하나를 랜덤으로 생성하게 된다.


중요한 것은 0부터 10이 아니라는 것이다.


매개변수 두 개 중 


시작값인 0은 포함(inclusive)되고, 끝값은 제외(exclusive)된다.


물론 시작값이 0이 아니어도 마찮가지이다.


만약, 1부터 99까지의 값들중에 랜덤으로 값을 만들기 위해서는 다음과 같이 작성하면 된다.


Random.Range(1, 100);


100까지 하고 싶다면, 마지막 값에 +1을 해주는 방식으로 작성해야한다.


/////


float와 int형 두 개의 값을 구할 수 있다. 다른점은



 


float 범위를 구할때는 최대값이 포함되고,

int 범위를 구할때는 최대값이 제외된다.


즉,


Random.Range(0.0, 4.0);  --> 0.0부터 4.0까지의 범위 중 소숫점 임의의 값을 구할 수 있다. 4.0도 포함이다.


Random.Range(0, 4);  --> 0부터 4까지의 범위 중 정수값 중 임의의 값을 구할 수 있다. 4는 제외된다.



 

Posted by sungho88
,