1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // --------------------------------------------------------------------------------------------------------------------
- // <copyright file="OnClickInstantiate.cs" company="Exit Games GmbH">
- // Part of: Photon Unity Utilities
- // </copyright>
- // <summary>A compact script for prototyping.</summary>
- // <author>developer@exitgames.com</author>
- // --------------------------------------------------------------------------------------------------------------------
- namespace Photon.Pun.UtilityScripts
- {
- using UnityEngine;
- using UnityEngine.EventSystems;
- /// <summary>
- /// Instantiates a networked GameObject on click.
- /// </summary>
- /// <remarks>
- /// Gets OnClick() calls by Unity's IPointerClickHandler. Needs a PhysicsRaycaster on the camera.
- /// See: https://docs.unity3d.com/ScriptReference/EventSystems.IPointerClickHandler.html
- /// </remarks>
- public class OnClickInstantiate : MonoBehaviour, IPointerClickHandler
- {
- public enum InstantiateOption { Mine, Scene }
- public PointerEventData.InputButton Button;
- public KeyCode ModifierKey;
- public GameObject Prefab;
- [SerializeField]
- private InstantiateOption InstantiateType = InstantiateOption.Mine;
- void IPointerClickHandler.OnPointerClick(PointerEventData eventData)
- {
- if (!PhotonNetwork.InRoom || (this.ModifierKey != KeyCode.None && !Input.GetKey(this.ModifierKey)) || eventData.button != this.Button)
- {
- return;
- }
- switch (this.InstantiateType)
- {
- case InstantiateOption.Mine:
- PhotonNetwork.Instantiate(this.Prefab.name, eventData.pointerCurrentRaycast.worldPosition + new Vector3(0, 0.5f, 0), Quaternion.identity, 0);
- break;
- case InstantiateOption.Scene:
- PhotonNetwork.InstantiateRoomObject(this.Prefab.name, eventData.pointerCurrentRaycast.worldPosition + new Vector3(0, 0.5f, 0), Quaternion.identity, 0, null);
- break;
- }
- }
- }
- }
|