How to sync the player's particle system in Unity

Hello everyone:
I am working on a multiplayer building display project by using Unity and PUN and I met the following problems:

  1. I can use PUN to sync my player’s transform, animation. However, I do not know how to sync the particle system on the player to other players.
  2. I create a on/off function for the players to turn on/off their laser pointer. However, When I turn on my player’s particle system, the other players will turn the laser pointer as well.

Please help me to fix these problems. Thank you!!!

2487697–171581–NetworkCharacter.cs (1.39 KB)
2487697–171582–NetworkManager.cs (1.37 KB)

using UnityEngine;
using System.Collections;

public class NetworkCharacter : Photon.MonoBehaviour {

Vector3 realPosition = Vector3.zero;
Quaternion realRotation = Quaternion.identity;

Animator anim;

// Use this for initialization
void Start () {

anim = GetComponent();

}

// Update is called once per frame
void Update () {
if (photonView.isMine) {
//Do nothing–the charactor motor/input/ect… is moving us
}
else {
transform.position = Vector3.Lerp(transform.position, realPosition, 0.1f);
transform.rotation = Quaternion.Lerp(transform.rotation, realRotation, 0.1f);

}
}

public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) {
if(stream.isWriting){
// This is our player. We need to sent our actual position ot the network.

stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
stream.SendNext(anim.GetFloat(“walk”));

}
else {
//This is someone else’s player. We need to receive their position as of a few
// millisecond, and update our version of that player.

realPosition = (Vector3)stream.ReceiveNext();
realRotation = (Quaternion)stream.ReceiveNext();
anim.SetFloat(“walk”,(float)stream.ReceiveNext());

using UnityEngine;
using System.Collections;

public class NetworkCharacter : Photon.MonoBehaviour {

Vector3 realPosition = Vector3.zero;
Quaternion realRotation = Quaternion.identity;

Animator anim;

// Use this for initialization
void Start () {

anim = GetComponent();

}

// Update is called once per frame
void Update () {
if (photonView.isMine) {
//Do nothing–the charactor motor/input/ect… is moving us
}
else {
transform.position = Vector3.Lerp(transform.position, realPosition, 0.1f);
transform.rotation = Quaternion.Lerp(transform.rotation, realRotation, 0.1f);

}
}

public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) {
if(stream.isWriting){
// This is our player. We need to sent our actual position ot the network.

stream.SendNext(transform.position);
stream.SendNext(transform.rotation);
stream.SendNext(anim.GetFloat(“walk”));

}
else {
//This is someone else’s player. We need to receive their position as of a few
// millisecond, and update our version of that player.

realPosition = (Vector3)stream.ReceiveNext();
realRotation = (Quaternion)stream.ReceiveNext();
anim.SetFloat(“walk”,(float)stream.ReceiveNext());