게임을하는 클라이언트가 항목을 구입하고 네트워크를 통해 해당 항목을 생성하도록 허용하려고합니다. 이렇게하려면 두 개의 스크립트, 플레이어의 스크립트 및 항목 구입 버튼의 스크립트를 사용하고 있습니다. NetworkServer.Spawn()은 서버에서만 호출 할 수 있으므로 구매 항목 스크립트에서 수행하는 대신 내 항목을 생성하는 플레이어 함수에 명령 함수를 만들었습니다. 그러나이 문제를 해결할 때 NullReferenceException 오류가 발생했습니다.은 전달한 인수가 null임을 나타냅니다. 인수가 null 인 이유는 무엇입니까?클라이언트에서 서버로 보낼 때 인수가 null이되었습니다.
구입 항목 스크립트 코드 :
void BuyItemAndSubtractGold(){
GameObject item = SearchForItem();
int cost = item.GetComponent<ItemManager_ItemStats>().item.buyValue;
if (item.GetComponent<ItemManager_ItemStats>() != null && storeMaster.gold >= cost) {
GameObject newItem = (GameObject)Instantiate (item);
playerMaster.CmdSpawnOnServer (newItem);
newItem.transform.parent = playerInventory.transform;
newItem.SetActive (false);
Vector3 gunPosition = newItem.GetComponent<ItemManager_ItemPickup>().gunPositions [0];
newItem.transform.localPosition = gunPosition;
newItem.transform.rotation = Quaternion.Euler(itemThrow.originalRotation);
storeMaster.gold -= cost;
audioSource.clip = boughtItem;
audioSource.Play();
storeMaster.CallEventUpdateUI();
sellInventory.LoadInventory();
playerMaster.CmdCallEventInventoryChanged();
} else {
noGold.SetActive (true);
StartCoroutine (wait5sec());
}
}
플레이어 스크립트 코드 : 명령을 통해 게임 오브젝트를 보내려고 같은 오류
당신은 시스템이'NetworkIdentity' 구성 요소에 대해보고가는 경우가'NullReferenceException'가 발생 알 수 있습니다. 여러분이 클라이언트 - 서버 아키텍처를 해결하려고 노력하고있는 것처럼 보입니다.하지만 좋은 접근 방식이 아닐 수도 있습니다. 자습서를 확인하는 것이 좋습니다. – rutter
@rutter 좋은 자습서를 추천 해 주시겠습니까? –