first commit
This commit is contained in:
@@ -0,0 +1,311 @@
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
// <copyright file="DemoHubManager.cs" company="Exit Games GmbH">
|
||||
// Part of: Photon Unity Demos
|
||||
// </copyright>
|
||||
// <summary>
|
||||
// Used as starting point to let developer choose amongst all demos available.
|
||||
// </summary>
|
||||
// <author>developer@exitgames.com</author>
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Photon.Pun.Demo.Cockpit;
|
||||
|
||||
namespace Photon.Pun.Demo.Hub
|
||||
{
|
||||
public class DemoHubManager : MonoBehaviour {
|
||||
|
||||
|
||||
public Text TitleText;
|
||||
public Text DescriptionText;
|
||||
public GameObject OpenSceneButton;
|
||||
public GameObject OpenTutorialLinkButton;
|
||||
public GameObject OpenDocLinkButton;
|
||||
|
||||
string MainDemoWebLink = "https://doc.photonengine.com/en-us/pun/v2/getting-started/pun-intro";
|
||||
|
||||
struct DemoData
|
||||
{
|
||||
public string Title;
|
||||
public string Description;
|
||||
public string Scene;
|
||||
public string TutorialLink;
|
||||
public string DocLink;
|
||||
}
|
||||
|
||||
Dictionary<string,DemoData> _data = new Dictionary<string, DemoData>();
|
||||
|
||||
string currentSelection;
|
||||
|
||||
// Use this for initialization
|
||||
void Awake () {
|
||||
|
||||
PunCockpit.Embedded = false;
|
||||
|
||||
OpenSceneButton.SetActive(false);
|
||||
|
||||
OpenTutorialLinkButton.SetActive(false);
|
||||
OpenDocLinkButton.SetActive(false);
|
||||
|
||||
// Setup data
|
||||
_data.Add(
|
||||
"DemoBoxes",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Demo Boxes",
|
||||
Description = "Uses ConnectAndJoinRandom script.\n" +
|
||||
"(joins a random room or creates one)\n" +
|
||||
"\n" +
|
||||
"Instantiates simple prefabs.\n" +
|
||||
"Synchronizes positions without smoothing.\n" +
|
||||
"Shows that RPCs target a specific object.",
|
||||
Scene = "DemoBoxes-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"DemoWorker",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Demo Worker",
|
||||
Description = "Joins the default lobby and shows existing rooms.\n" +
|
||||
"Lets you create or join a room.\n" +
|
||||
"Instantiates an animated character.\n" +
|
||||
"Synchronizes position and animation state of character with smoothing.\n" +
|
||||
"Implements simple in-room Chat via RPC calls.",
|
||||
Scene = "DemoWorker-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"MovementSmoothing",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Movement Smoothing",
|
||||
Description = "Uses ConnectAndJoinRandom script.\n" +
|
||||
"Shows several basic ways to synchronize positions between controlling client and remote ones.\n" +
|
||||
"The TransformView is a good default to use.",
|
||||
Scene = "DemoSynchronization-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"BasicTutorial",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Basic Tutorial",
|
||||
Description = "All custom code for connection, player and scene management.\n" +
|
||||
"Auto synchronization of room levels.\n" +
|
||||
"Uses PhotonAnimatoView for Animator synch.\n" +
|
||||
"New Unity UI all around, for Menus and player health HUD.\n" +
|
||||
"Full step by step tutorial available online.",
|
||||
Scene = "PunBasics-Launcher" ,
|
||||
TutorialLink = "https://doc.photonengine.com/en-us/pun/v2/demos-and-tutorials/pun-basics-tutorial/intro"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"OwnershipTransfer",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Ownership Transfer",
|
||||
Description = "Shows how to transfer the ownership of a PhotonView.\n" +
|
||||
"The owner will send position updates of the GameObject.\n" +
|
||||
"Transfer can be edited per PhotonView and set to Fixed (no transfer), Request (owner has to agree) or Takeover (owner can't object).",
|
||||
Scene = "DemoChangeOwner-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"PickupTeamsScores",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Pickup, Teams, Scores",
|
||||
Description = "Uses ConnectAndJoinRandom script.\n" +
|
||||
"Implements item pickup with RPCs.\n" +
|
||||
"Uses Custom Properties for Teams.\n" +
|
||||
"Counts score per player and team.\n" +
|
||||
"Uses Player extension methods for easy Custom Property access.",
|
||||
Scene = "DemoPickup-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"Chat",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Chat",
|
||||
Description = "Uses the Chat API.\n" +
|
||||
"Simple UI.\n" +
|
||||
"You can enter any User ID.\n" +
|
||||
"Automatically subscribes some channels.\n" +
|
||||
"Allows simple commands via text.\n" +
|
||||
"\n" +
|
||||
"Requires configuration of Chat App ID in ServerSettings.",
|
||||
Scene = "DemoChat-Scene",
|
||||
DocLink = "http://j.mp/2iwQkPJ"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"RPGMovement",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "RPG Movement",
|
||||
Description = "Demonstrates how to use the PhotonTransformView component to synchronize position updates smoothly using inter- and extrapolation.\n" +
|
||||
"\n" +
|
||||
"This demo also shows how to setup a Mecanim Animator to update animations automatically based on received position updates (without sending explicit animation updates).",
|
||||
Scene = "DemoRPGMovement-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"MecanimAnimations",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Mecanim Animations",
|
||||
Description = "This demo shows how to use the PhotonAnimatorView component to easily synchronize Mecanim animations.\n" +
|
||||
"\n" +
|
||||
"It also demonstrates another feature of the PhotonTransformView component which gives you more control how position updates are inter-/extrapolated by telling the component how fast the object moves and turns using SetSynchronizedValues().",
|
||||
Scene = "DemoMecanim-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"2DGame",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "2D Game Demo",
|
||||
Description = "Synchronizes animations, positions and physics in a 2D scene.",
|
||||
Scene = "Demo2DJumpAndRunWithPhysics-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"FriendsAndAuth",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Friends & Authentication",
|
||||
Description = "Shows connect with or without (server-side) authentication.\n" +
|
||||
"\n" +
|
||||
"Authentication requires minor server-side setup (in Dashboard).\n" +
|
||||
"\n" +
|
||||
"Once connected, you can find (made up) friends.\nJoin a room just to see how that gets visible in friends list.",
|
||||
Scene = "DemoFriends-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"TurnBasedGame",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "'Rock Paper Scissor' Turn Based Game",
|
||||
Description = "Demonstrate TurnBased Game Mechanics using PUN.\n" +
|
||||
"\n" +
|
||||
"It makes use of the TurnBasedManager Utility Script",
|
||||
Scene = "DemoRPS-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"Asteroids",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Asteroids",
|
||||
Description = "Simple asteroid game based on the Unity learning asset.\n",
|
||||
Scene = "DemoAsteroids-LobbyScene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"SlotRacer",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Slot Racer",
|
||||
Description = "Simple SlotRacing game.\n",
|
||||
Scene = "SlotCar-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
_data.Add(
|
||||
"LoadBalancing",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Load Balancing",
|
||||
Description = "Shows how to use the raw LoadBalancing system.\n" +
|
||||
"\n" +
|
||||
"This is a simple test scene to connect and join a random room, without using PUN but the actual LoadBalancing api only",
|
||||
Scene = "DemoLoadBalancing-Scene"
|
||||
}
|
||||
);
|
||||
|
||||
_data.Add(
|
||||
"PunCockpit",
|
||||
new DemoData()
|
||||
{
|
||||
Title = "Cockpit",
|
||||
Description = "Controls most aspect of PUN.\n" +
|
||||
"Connection, Lobby, Room access, Player control",
|
||||
Scene = "PunCockpit-Scene"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public void SelectDemo(string Reference)
|
||||
{
|
||||
currentSelection = Reference;
|
||||
|
||||
TitleText.text = _data[currentSelection].Title;
|
||||
DescriptionText.text = _data[currentSelection].Description;
|
||||
|
||||
OpenSceneButton.SetActive(!string.IsNullOrEmpty(_data[currentSelection].Scene));
|
||||
|
||||
OpenTutorialLinkButton.SetActive(!string.IsNullOrEmpty(_data[currentSelection].TutorialLink));
|
||||
OpenDocLinkButton.SetActive(!string.IsNullOrEmpty(_data[currentSelection].DocLink));
|
||||
}
|
||||
|
||||
public void OpenScene()
|
||||
{
|
||||
if (string.IsNullOrEmpty(currentSelection))
|
||||
{
|
||||
Debug.LogError("Bad setup, a CurrentSelection is expected at this point");
|
||||
return;
|
||||
}
|
||||
|
||||
SceneManager.LoadScene(_data[currentSelection].Scene);
|
||||
}
|
||||
|
||||
public void OpenTutorialLink()
|
||||
{
|
||||
if (string.IsNullOrEmpty(currentSelection))
|
||||
{
|
||||
Debug.LogError("Bad setup, a CurrentSelection is expected at this point");
|
||||
return;
|
||||
}
|
||||
|
||||
Application.OpenURL(_data[currentSelection].TutorialLink);
|
||||
}
|
||||
|
||||
public void OpenDocLink()
|
||||
{
|
||||
if (string.IsNullOrEmpty(currentSelection))
|
||||
{
|
||||
Debug.LogError("Bad setup, a CurrentSelection is expected at this point");
|
||||
return;
|
||||
}
|
||||
|
||||
Application.OpenURL(_data[currentSelection].DocLink);
|
||||
}
|
||||
|
||||
public void OpenMainWebLink()
|
||||
{
|
||||
Application.OpenURL(MainDemoWebLink);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed6ca7d1055974cc7847025558e8a903
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@@ -0,0 +1,93 @@
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
// <copyright file="ToDemoHubButton.cs" company="Exit Games GmbH">
|
||||
// Part of: Photon Unity Demos
|
||||
// </copyright>
|
||||
// <summary>
|
||||
// Present a button on all launched demos from hub to allow getting back to the demo hub.
|
||||
// </summary>
|
||||
// <author>developer@exitgames.com</author>
|
||||
// --------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace Photon.Pun.Demo.Hub
|
||||
{
|
||||
/// <summary>
|
||||
/// Present a button on all launched demos from hub to allow getting back to the demo hub.
|
||||
/// </summary>
|
||||
public class ToDemoHubButton : MonoBehaviour
|
||||
{
|
||||
|
||||
private static ToDemoHubButton instance;
|
||||
|
||||
|
||||
CanvasGroup _canvasGroup;
|
||||
|
||||
public static ToDemoHubButton Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = FindObjectOfType(typeof (ToDemoHubButton)) as ToDemoHubButton;
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
if (Instance != null && Instance != this)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
// Use this for initialization
|
||||
public void Start()
|
||||
{
|
||||
DontDestroyOnLoad(gameObject);
|
||||
|
||||
_canvasGroup = GetComponent<CanvasGroup>();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void Update()
|
||||
{
|
||||
bool sceneZeroLoaded = false;
|
||||
|
||||
#if UNITY_5 && !UNITY_5_0 && !UNITY_5_1 && !UNITY_5_2 || UNITY_5_3_OR_NEWER
|
||||
sceneZeroLoaded = SceneManager.GetActiveScene().buildIndex == 0;
|
||||
#else
|
||||
sceneZeroLoaded = Application.loadedLevel == 0;
|
||||
#endif
|
||||
|
||||
if (sceneZeroLoaded && _canvasGroup.alpha!= 0f)
|
||||
{
|
||||
_canvasGroup.alpha = 0f;
|
||||
_canvasGroup.interactable = false;
|
||||
}
|
||||
|
||||
if (!sceneZeroLoaded && _canvasGroup.alpha!= 1f)
|
||||
{
|
||||
_canvasGroup.alpha = 1f;
|
||||
_canvasGroup.interactable = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void BackToHub()
|
||||
{
|
||||
PhotonNetwork.Disconnect();
|
||||
SceneManager.LoadScene(0);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f877c2f2d403a4d4f975fb1fd64fe7e8
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
Reference in New Issue
Block a user