Написал скрипт , он работает , но если создаю объект на хосте то клиент видит это , но если создаю на клиенте то хост этого не видит.
Вот скрипт :
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class InstSynCube : NetworkBehaviour
{
public Camera Caaamera;
public GameObject Cubee;
private GameObject StartObject;
private bool building;
private Material StartMaterial;
public Material BuildMaterial;
private float heightObject;
private float xObject;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if (!isLocalPlayer)
return;
if(Input.GetKeyDown(KeyCode.B)){
building = true;
}
if(building == true && Cubee != null) {
RaycastHit hit;
if(Physics.Raycast(Caaamera.transform.position, Caaamera.transform.forward, out hit, 15)) {
if(StartObject == null) {
StartObject = (GameObject)Instantiate(Cubee, Vector3.zero, Quaternion.identity);
if(StartObject.GetComponent<MeshRenderer>()) {
StartMaterial = StartObject.GetComponent<MeshRenderer>().material;
StartObject.GetComponent<MeshRenderer>().material = BuildMaterial;
}
if(StartObject.GetComponent<Rigidbody>()) {
StartObject.GetComponent<Rigidbody>().isKinematic = true;
}
if(StartObject.GetComponent<BoxCollider>()) {
StartObject.GetComponent<BoxCollider>().enabled = false;
}
if(StartObject.GetComponent<SphereCollider>()) {
StartObject.GetComponent<SphereCollider>().enabled = false;
}
if(StartObject.GetComponent<MeshCollider>()) {
StartObject.GetComponent<MeshCollider>().enabled = false;
}
if(StartObject.GetComponent<CapsuleCollider>()) {
StartObject.GetComponent<CapsuleCollider>().enabled = false;
}
}else{
heightObject = StartObject.transform.lossyScale.y/2 + hit.point.y;
xObject = StartObject.transform.lossyScale.x/2 + hit.point.x;
StartObject.transform.position = new Vector3(xObject, heightObject, hit.point.z);
Cmd_Inst (hit.point);
}
}
}
}
[Command]
public void Cmd_Inst(Vector3 pos)
{
if(Input.GetMouseButtonDown(0)) {
if(StartObject.GetComponent<MeshRenderer>()) {
StartObject.GetComponent<MeshRenderer>().material = StartMaterial;
}
if(StartObject.GetComponent<Rigidbody>()) {
StartObject.GetComponent<Rigidbody>().isKinematic = false;
}
if(StartObject.GetComponent<BoxCollider>()) {
StartObject.GetComponent<BoxCollider>().enabled = true;
}
if(StartObject.GetComponent<SphereCollider>()) {
StartObject.GetComponent<SphereCollider>().enabled = true;
}
if(StartObject.GetComponent<MeshCollider>()) {
StartObject.GetComponent<MeshCollider>().enabled = true;
}
if(StartObject.GetComponent<CapsuleCollider>()) {
StartObject.GetComponent<CapsuleCollider>().enabled = true;
}
NetworkServer.Spawn (StartObject);
StartObject = null;
heightObject = 0;
xObject = 0;
building = false;
}
}
}
using System.Collections;
using UnityEngine.Networking;
public class InstSynCube : NetworkBehaviour
{
public Camera Caaamera;
public GameObject Cubee;
private GameObject StartObject;
private bool building;
private Material StartMaterial;
public Material BuildMaterial;
private float heightObject;
private float xObject;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
if (!isLocalPlayer)
return;
if(Input.GetKeyDown(KeyCode.B)){
building = true;
}
if(building == true && Cubee != null) {
RaycastHit hit;
if(Physics.Raycast(Caaamera.transform.position, Caaamera.transform.forward, out hit, 15)) {
if(StartObject == null) {
StartObject = (GameObject)Instantiate(Cubee, Vector3.zero, Quaternion.identity);
if(StartObject.GetComponent<MeshRenderer>()) {
StartMaterial = StartObject.GetComponent<MeshRenderer>().material;
StartObject.GetComponent<MeshRenderer>().material = BuildMaterial;
}
if(StartObject.GetComponent<Rigidbody>()) {
StartObject.GetComponent<Rigidbody>().isKinematic = true;
}
if(StartObject.GetComponent<BoxCollider>()) {
StartObject.GetComponent<BoxCollider>().enabled = false;
}
if(StartObject.GetComponent<SphereCollider>()) {
StartObject.GetComponent<SphereCollider>().enabled = false;
}
if(StartObject.GetComponent<MeshCollider>()) {
StartObject.GetComponent<MeshCollider>().enabled = false;
}
if(StartObject.GetComponent<CapsuleCollider>()) {
StartObject.GetComponent<CapsuleCollider>().enabled = false;
}
}else{
heightObject = StartObject.transform.lossyScale.y/2 + hit.point.y;
xObject = StartObject.transform.lossyScale.x/2 + hit.point.x;
StartObject.transform.position = new Vector3(xObject, heightObject, hit.point.z);
Cmd_Inst (hit.point);
}
}
}
}
[Command]
public void Cmd_Inst(Vector3 pos)
{
if(Input.GetMouseButtonDown(0)) {
if(StartObject.GetComponent<MeshRenderer>()) {
StartObject.GetComponent<MeshRenderer>().material = StartMaterial;
}
if(StartObject.GetComponent<Rigidbody>()) {
StartObject.GetComponent<Rigidbody>().isKinematic = false;
}
if(StartObject.GetComponent<BoxCollider>()) {
StartObject.GetComponent<BoxCollider>().enabled = true;
}
if(StartObject.GetComponent<SphereCollider>()) {
StartObject.GetComponent<SphereCollider>().enabled = true;
}
if(StartObject.GetComponent<MeshCollider>()) {
StartObject.GetComponent<MeshCollider>().enabled = true;
}
if(StartObject.GetComponent<CapsuleCollider>()) {
StartObject.GetComponent<CapsuleCollider>().enabled = true;
}
NetworkServer.Spawn (StartObject);
StartObject = null;
heightObject = 0;
xObject = 0;
building = false;
}
}
}
Уже какие только варианты не пробовал , всё тоже самое ...