티스토리 뷰
* Unet은 현재 Unity에서 지원하지 않음.
따라서 직접 패키지 설치필요.
Window - Package Manager - 좌측상단 + 버튼 - Add Package from git URL - com.unity.multiplayer-hlapi
Network
네트워크 사용위해서는 Game Object에 Network Manager 컴포넌트 추가.
Network HUD 추가.
NetworkBehaviour 상속
using UnityEngine;
using UnityEngine.Networking;
public class Player : NetworkBehaviour {
private const float Speed = 6f;
private const float Rotspeed = 100f;
void Update()
{
if (!isLocalPlayer) return; // 즉 Local player 아니라면 무시.
float h = Input.GetAxis("Horizontal") * Rotspeed * Time.deltaTime;
float v = Input.GetAxis("Vertical") * Speed * Time.deltaTime;
transform.Rotate(0, h, 0);
transform.Translate(0, 0, v);
}
}
NetworkBehaviour 상속받고 if (!isLocalplayer) 즉 로칼플레이어가 아니라면 리턴해줘야 나의 오브젝트만 움직인다.
이렇게 하지 않으면 호스트, 클라이언트 즉 두개의 오브젝트가 있을때 키보드 눌렀을때 둘 다 동시에 움직임. (즉 버그)
Network Transform
Network Identity 를 가지는 오브젝트의 Transform을 동기화 시킴.
Network Object : local 에서 뿐만 아니라 모든 네트워크에서 나타나야 하는 Object.
A, B 컴퓨터가 있을때, B 컴퓨터에서 오브젝트를 생성시킨다고 하면, B에서 직접 생성이 아닌 서버(A컴퓨터)에게 생성해달라고 부탁하는 방식.
- Network Object는 네트워크 상에서 존재감을 가져야하므로
Network Identity를 component로 가져야함.
Network Identity의 Local Player Authority를 체크하면 이 으보젝트를 소유한 클라이언트가 오브젝트를 제어 가능.
- Network Object는 서버(호스트)에서
그냥 Instantiate가 아닌 NetworkSever.Spawn 으로 오브젝트 생성.
- 클라이언트에 전달되어야할 명령으로서 함수는 [Command] 속성을 갖고, Cmd~~ 로 시작됨.
[Command] 함수는 자신이 해당 함수를 직접 호출하지않고, Host에게 호출해 달라고 요청함.
using UnityEngine;
using UnityEngine.Networking;
public class Player : NetworkBehaviour {
...
private void Update()
{
...
if(Input.GetMouseButtonDown(0))
{
CmdCreateBox();
}
}
[Command]
void CmdCreateBox()
{
GameObject box = Instantiate(_box, transform.position, Quaternion.identity);
box.GetComponent<Rigidbody>().velocity = transform.forward * 20f;
}
}
모든 값의 동기화 : 모든 네트워크에서 값이 동기화되어야 할때
[SyncVar(hook = "OnChangeCount")]
int count = 0;
// hook : 해당 변수 변화 생기면 명시한 함수 자동 호출함.
'유니티' 카테고리의 다른 글
비활성화된 GameObject 찾기 (0) | 2021.01.01 |
---|---|
오브젝트 색상 변경 (0) | 2020.12.31 |
키보드 입력으로 오브젝트 이동 (0) | 2020.12.27 |
transform.position (0) | 2020.11.28 |
마우스 클릭한곳의 좌표, 오브젝트 생성 (0) | 2020.10.09 |
- Total
- Today
- Yesterday
- CSS
- 조합
- db
- recursion
- 이분탐색
- floyd warshall
- Kruskal
- Unity
- Implementation
- graph
- dfs
- BFS
- MVC
- C++
- DP
- greedy
- Tree
- Spring
- Python
- Dijkstra
- binary search
- 재귀
- priority queue
- two pointer
- 자료구조
- C
- permutation
- Brute Force
- back tracking
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |