i have this error
NullReferenceException: Object reference not set to an instance of an object
FoodSpawn.MyFoodSpawn () (at Assets/Resources/Scripts/FoodSpawn.cs:33)
Now i will show all scripts to do with the networking of photon:
Network Manager -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class NetworkManager : MonoBehaviour {
private RoomInfo[] roomsList;
public GameObject player;
void Start()
{
PhotonNetwork.ConnectUsingSettings ("0.1");
}
void OnGUI()
{
if (!PhotonNetwork.connected) {
GUILayout.Label (PhotonNetwork.connectionStateDetailed.ToString ());
} else if (PhotonNetwork.room == null) {
if (GUI.Button (new Rect (100, 100, 250, 100), "Start Server")) {
PhotonNetwork.CreateRoom ("Bumpie Room", new RoomOptions (){ maxPlayers = 15 }, null);
}
}
if (roomsList != null)
{
for (int i = 0; i < roomsList.Length; i++)
{
if(GUI.Button(new Rect(100,250 + (110 * i), 250, 100), "Join ThisRoom")){
PhotonNetwork.JoinRoom(roomsList[i].Name);
}
}
}
}
void OnRecievedRoomListUpdate()
{
roomsList = PhotonNetwork.GetRoomList ();
}
void OnJoinedRoom()
{
Debug.Log ("Connected To The Room");
PhotonNetwork.Instantiate (player.transform.name, Vector3.zero, Quaternion.identity, 0);
}
}
OnlineSyncing -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnlineSyncing : Photon.MonoBehaviour {
void Start()
{
if (photonView.isMine)
{
gameObject.GetComponent<Eat> ().enabled = true;
}
PhotonNetwork.sendRate = 20;
PhotonNetwork.sendRateOnSerialize = 20;
}
void FixedUpdate()
{
SmoothSyncMovement ();
}
void SmoothSyncMovement()
{
if (photonView.isMine) {
} else {
transform.position = Vector3.Lerp (transform.position, realPosition, Time.deltaTime * 5);
}
}
Vector3 realPosition = Vector3.zero;
void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{
if (stream.isWriting) {
stream.SendNext (transform.position);
}
else
{
realPosition = (Vector3)stream.ReceiveNext ();
}
}
}
CollisionNetwork -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CollisionNetwork : Photon.MonoBehaviour {
public DisplayManager RefDisplayerManager;
public int score ;
public string Tag;
public float Increase;
void Awake()
{
photonView.RPC ("ChangeMyName", PhotonTargets.AllBuffered, PhotonNetwork.playerList.Length.ToString ());
}
[PunRPC]
void ChangeMyName(string myNewName)
{
gameObject.transform.name = myNewName;
}
[PunRPC]
public float MassProperty {
get {
var parameter = 1/Mathf.InverseLerp( 0f , 10000f , score + 10 ) ;
return parameter ;
}
}
public Transform gameObject;
void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == Tag)
{
transform.localScale += new Vector3 (Increase, Increase, Increase);
score += 1;
Destroy (other.gameObject);
if (photonView.isMine)
{
photonView.RPC ("AddMassProperty", PhotonTargets.AllBuffered, gameObject.transform.name);
photonView.RPC ("DestroyGem", PhotonTargets.AllBuffered, other.gameObject.name);
}
}
}
[PunRPC]
void DestroyGem(string _name)
{
Destroy(GameObject.Find(_name).gameObject);
}
}
Cell -
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class Cell : Photon.MonoBehaviour {
public Camera ourCamera ;
public float Speed ;
private Vector3 Target ;
public float degreesPerSecond;
void Awake()
{
photonView.RPC ("ChangeMyName", PhotonTargets.AllBuffered, PhotonNetwork.playerList.Length.ToString ());
}
[PunRPC]
void ChangeMyName(string myNewName)
{
gameObject.transform.name = myNewName;
}
void Start ()
{
// if ourCamera is null then set the Main Camera to the variable ourCamera
if (!ourCamera)
{
ourCamera = Camera.main ;
}
}
void Update ()
{
// DrawRay ();
Vector3 Target = Camera.main.ScreenToWorldPoint (Input.mousePosition);
Vector3 direction = Target - transform.position;
if(!Mathf.Approximately(Target.sqrMagnitude,0))
{
Quaternion look = Quaternion.LookRotation(Target);
transform.rotation = Quaternion.RotateTowards(transform.rotation,look,degreesPerSecond * Time.deltaTime);
}
Target.z = transform.position.z;
transform.position = Vector3.MoveTowards(transform.position , Target , Speed * Time.deltaTime/transform.localScale.x) ;
}
}
FoodSpawn -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FoodSpawn : Photon.MonoBehaviour
{
//public GameObject _foodPrefab ;
public GameObject[] _foodPrefabArray ;
public float minX;
public float maxX;
public float minY;
public float maxY;
public Vector2 Min ;
public Vector2 Max ;
private Vector3 myFoodPos ;
// public Rigidbody2D foodClone ;
void Start()
{
InvokeRepeating ("MyFoodSpawn", 5f, 0.5f);
}
void MyFoodSpawn()
{
myFoodPos = new Vector3 ( Random.Range(Min.x , Max.x ) , Random.Range(Min.y , Max.y) , 0 ) ;
int randomNumber = Random.Range (1, 10000);
photonView.RPC("SpawnForEverybody", PhotonTargets.AllBuffered, myFoodPos, randomNumber);
// var foodClone = Instantiate ( _foodPrefab, myFoodPos , transform.rotation ) as Rigidbody2D ;
}
[PunRPC]
void SpawnForEverybody(Vector3 _myFoodPos,string _name)
{
var i = Random.Range ( 0 , _foodPrefabArray.Length);
var randomRandomClone =Instantiate (_foodPrefabArray [i], _myFoodPos, transform.rotation) as GameObject;
randomRandomClone.transform.name = _name;
}
}
Also how would i sync the traps to the network
Death Trap -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeathTraps : MonoBehaviour {
public Transform player;
void OnTriggerEnter(Collider other)
{
if( other.gameObject.tag == "Player" )
{
other.gameObject.GetComponent<Animation> ().Play("Death");
Destroy(other.gameObject, 1);
Debug.Log(other.gameObject.name);
}
}
}