[SyncVar]라는 Attribute가 있습니다.이 어트리뷰트를 추가한 기본 데이터형(int, float, string...)의 변수는네트워크 상에서 동기화됩니다.(+추가) 다만, Server에서 Spawn을 통해 생성된 네트워크 객체에서만 작동합니다.[SyncVar]가 추가된 변수가 서버에서 변경될 때만 동기화 작업이 이루어집니다.[Command]나 [Server] 어트리뷰트가 추가된 메서드에서 그 변수가 변경되면 되겠습니다.물론 모든 클라이언트의 같은 인스턴스에서만 일어나는 일이겠습니다.같은 인스턴스로 식별되기 위해선 NetworkIdentity가 필요할 것입니다.여기서 값만 변경되면 심심하니 값이 바뀔 때 자동으로 호출되는 메서드도 설정할 수 있습니다.[Hook] 어트리뷰트에 그 메서드를 추가하면..
서버(Server) 측 콜백 메서드 순서Awake (Unity의 MonoBehaviour 메서드)네트워크 관리자를 초기화할 때 사용됩니다.Start (Unity의 MonoBehaviour 메서드)네트워크 관리자가 시작될 때 사용됩니다.OnStartServer서버가 시작되었을 때 호출됩니다. 서버 초기화 작업을 수행하는 데 사용됩니다.일반적으로 네트워크를 시작한 후 서버 준비 작업을 수행합니다.OnServerConnect(NetworkConnectionToClient conn)클라이언트가 서버에 처음 연결될 때 호출됩니다.클라이언트의 연결을 허용할지 또는 거부할지 결정할 수 있습니다.OnServerAddPlayer(NetworkConnectionToClient conn)새 클라이언트가 연결된 후, 해당 클..
NetworkRoomPlayer를 상속받는 클래스를 만든 후 Start를 사용하려고 하였다.당연히 Override를 하면 되겠거니 했는데 virtual 단에서 코드가 꽤 작성되어 있었다. public virtual void Start() { if (NetworkManager.singleton is NetworkRoomManager room) { // NetworkRoomPlayer object must be set to DontDestroyOnLoad along with NetworkRoomManager // in server and all clients, otherwise it will..
위의 이미지에서 키보드 a 와 d 자판은 Horizontal 이라는 이름의 버튼으로 할당 되어있다.여기서 Input.GetAxis("Horizontal")를 사용하면 -1 에서 1 까지의 float 값을 반환 받을 수 있다.이것에 관한 설정은 이하의 설정을 따르는데,키가 입력되면 Sensitivity에 설정한 만큼 값이 서서히 -1이나 1에 도달한다.그러다 입력이 중단되면 Gravity에 설정한 만큼 값이 서서히 0으로 되돌아간다.그러다 Dead에 설정한 값에 도달하면 입력이 없는 것으로 한다. 사람들은 Input.GetAxis를 Horizontal이나 Vertical 과 같이 캐릭터의 조작에 사용한다. transform.position += new Vector3(Input.GetAxis("Horizo..
Unity의 Application 클래스는 애플리케이션의 여러 정보와 경로를 관리하는 데 사용됩니다. 특히 파일 시스템과 관련된 경로를 다루는 메서드와 속성을 제공합니다. 여기에는 다양한 경로 종류가 있습니다:1. Application.dataPath설명: 프로젝트의 Assets 폴더가 있는 경로입니다.사용 예시: 주로 리소스 로드나 파일 쓰기와 같은 작업에 사용됩니다.예제:csharp코드 복사string path = Application.dataPath + "/Resources/myResource.txt";2. Application.persistentDataPath설명: 애플리케이션의 영구 데이터를 저장할 수 있는 경로입니다. 이 경로는 앱의 사용자 데이터를 저장하는 데 사용됩니다.사용 예시: 사용자 ..
GTA의 이걸 만들고 싶었다. 일단 이런게 필요할 거 같아서 라인 렌더러를 사용하였다. 라인렌더러는 Positions 라는 vector3 값들을 가지고 있는데 인덱스 순서대로 각 벡터 위치를 이어주는 선을 그려준다.이 값을 마우스 클릭 위치와 마우스가 드래그하여 이동한 위치로 갱신해주면 된다. using UnityEngine;public class LineDrag : MonoBehaviour{ [SerializeField] LineRenderer line; [SerializeField] float distance = 1; private void Start() { line.gameObject.SetActive(false); } void Update..
프로그램에서 배열은 연속된 메모리 공간에 순차적으로 저장된 데이터의 모음입니다. 이들은 Array, List, ArrayList 라고하는 컬렉션 타입들로,비슷한 방법으로 사용하지만 각자 고유한 특징이 있습니다. 1. Array먼저 Arrray에 대해 집고 넘어가야 하는 것이,이를 기준으로 다른 타입들의 추가적인 특징이 나타난다고 볼 수 있기 때문입니다.Array 타입은 선언 시 배열의 크기가 고정됩니다. 동적으로 크기를 변경할 수는 없고, 필요한 크기의 새 배열을 만들어 새로 할당해서 써야 합니다. 또한 int 배열에는 int 값만 저장할 수 있습니다.이는 데이터 타입을 제한한다고 볼 수 있지만 반환하는 데이터 타입의 안전성을 보장한다고도 볼 수 있습니다. int 형의 데이터 크기가 4바이트이므로..
███████████████████████████████████████████████████████████████████████████████████████████████████████████████▓█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▓▒███████████████████████████████████░░███████████░░███████████████████████████████████░░..