Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
4 captures
13 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by nachowasteland · Jun 01 at 10:24 AM · c#scripting problem

[SOLVED] Player prefab not spawning


Hi :) I have an issue where the players don't spawn when the game runs and I can't figure out why.


In my ServerNetPortal I have an approval check and in the script for the player (Tank), I have a random position method for where it should be spawned and my money is on that that's where the problem lies - I just don't know exactly where...


 using System;
 using System.Text;
 using System.Collections;
 using System.Collections.Generic;
 using Unity.Netcode;
 using UnityEngine;
 using UnityEngine.SceneManagement;
 
 /// <summary>
 /// Handle server logic.
 /// </summary>
 public class ServerGameNetPortal : MonoBehaviour
 {
     [Header("Settings")]
     public int maxPlayers = 4;
 
     private static ServerGameNetPortal instance;
     public static ServerGameNetPortal Instance => instance;
 
     private Dictionary<string, PlayerData> clientData;
     private Dictionary<ulong, string> clientIDToGuid;
     private Dictionary<ulong, int> clientSceneMap;
     private bool gameIsInProgress;
 
     private const int MaxConnectionPayload = 1024;
 
     private GameNetPortal gameNetPortal;
 
     private void Awake()
     {
         if(instance != null && instance != this)
         {
             Destroy(gameObject);
             return;
         }
         
         instance = this;
         DontDestroyOnLoad(gameObject);
     }
 
     private void Start()
     {
         gameNetPortal = GetComponent<GameNetPortal>();
         gameNetPortal.OnNetworkReadied += HandleNetworkReadied;
 
         NetworkManager.Singleton.ConnectionApprovalCallback += ApprovalCheck;
 
         NetworkManager.Singleton.OnServerStarted += HandleServerStarted;
 
         clientData = new Dictionary<string, PlayerData>();
         clientIDToGuid = new Dictionary<ulong, string>();
         clientSceneMap = new Dictionary<ulong, int>();
     }
 
     private void OnDestroy()
     {
         if (gameNetPortal == null)
             return;
 
         gameNetPortal.OnNetworkReadied -= HandleNetworkReadied;
 
         if (NetworkManager.Singleton == null)
             return;
 
         NetworkManager.Singleton.ConnectionApprovalCallback -= ApprovalCheck;
 
         NetworkManager.Singleton.OnServerStarted -= HandleServerStarted;
     }
 
     public PlayerData? GetPlayerData(ulong clientID)
     {
         if (clientIDToGuid.TryGetValue(clientID, out string clientGuid))
         {
             if (clientData.TryGetValue(clientGuid, out PlayerData playerData))
                 return playerData;
             else
                 Debug.Log("No player data found for client ID: {clientID}");
         }
         else
             Debug.Log("No client guid found for client ID: {clientID}");
 
         return null;
     }
 
     public void StartGame()
     {
         gameIsInProgress = true;
 
         NetworkManager.Singleton.SceneManager.LoadScene("GameScene", LoadSceneMode.Single);
     }
 
     public void EndGame()
     {
         gameIsInProgress = false;
 
         NetworkManager.Singleton.SceneManager.LoadScene("LobbyScene", LoadSceneMode.Single);
     }
 
     private void HandleNetworkReadied()
     {
         if (!NetworkManager.Singleton.IsServer)
             return;
 
         gameNetPortal.OnUserDisconnectRequested += HandleUserDisconnectRequested;
         NetworkManager.Singleton.OnClientDisconnectCallback += HandleClientDisconnect;
         gameNetPortal.OnClientSceneChanged += HandleClientSceneChanged;
 
         NetworkManager.Singleton.SceneManager.LoadScene("LobbyScene", LoadSceneMode.Single);
 
         if (NetworkManager.Singleton.IsHost)
             clientSceneMap[NetworkManager.Singleton.LocalClientId] = SceneManager.GetActiveScene().buildIndex;
     }
     private void HandleClientDisconnect(ulong clientID)
     {
         clientSceneMap.Remove(clientID);
 
         if (clientIDToGuid.TryGetValue(clientID, out string guid))
         {
             clientIDToGuid.Remove(clientID);
 
             if (clientData[guid].ClientID == clientID)
                 clientData.Remove(guid);
         }
 
         if(clientID == NetworkManager.Singleton.LocalClientId)
         {
             gameNetPortal.OnUserDisconnectRequested -= HandleUserDisconnectRequested;
             NetworkManager.Singleton.OnClientDisconnectCallback -= HandleClientDisconnect;
             gameNetPortal.OnClientSceneChanged -= HandleClientSceneChanged;
         }
     }
 
     private void HandleClientSceneChanged(ulong clientID, int sceneIndex)
     {
         clientSceneMap[clientID] = sceneIndex;
     }
 
     private void HandleUserDisconnectRequested()
     {
         HandleClientDisconnect(NetworkManager.Singleton.LocalClientId);
 
         NetworkManager.Singleton.Shutdown();
 
         ClearData();
 
         SceneManager.LoadScene("MenuScene");
     }
 
     private void HandleServerStarted()
     {
         if (!NetworkManager.Singleton.IsHost)
             return;
 
         string clientGuid = Guid.NewGuid().ToString();
         string playerName = PlayerPrefs.GetString("PlayerName", "Missing Name");
 
         clientData.Add(clientGuid, new PlayerData(playerName, NetworkManager.Singleton.LocalClientId));
         clientIDToGuid.Add(NetworkManager.Singleton.LocalClientId, clientGuid);
     }
 
     private void ClearData()
     {
         clientData.Clear();
         clientIDToGuid.Clear();
         clientSceneMap.Clear();
 
         gameIsInProgress = false;
     }
 
     private void ApprovalCheck(byte[] connectionData, ulong clientID, NetworkManager.ConnectionApprovedDelegate callback)
     {
         if(connectionData.Length > MaxConnectionPayload)
         {
             callback(false, 0, false, null, null);
             return;
         }
 
         if(clientID == NetworkManager.Singleton.LocalClientId)
         {
             callback(false, null, true, null, null);
             return;
         }
 
         string payload = Encoding.UTF8.GetString(connectionData);
         var connectionPayload = JsonUtility.FromJson<ConnectionPayload>(payload);
 
         ConnectStatus gameReturnStatus = ConnectStatus.Success;
 
         // Checks if an instance is already running.
         if (clientData.ContainsKey(connectionPayload.clientGuid))
         {
             ulong oldClientID = clientData[connectionPayload.clientGuid].ClientID;
             StartCoroutine(WaitToDisconnectClient(oldClientID, ConnectStatus.LoggedInAgain));
         }
 
         if (gameIsInProgress)
             gameReturnStatus = ConnectStatus.GameInProgress;
 
         else if (clientData.Count >= maxPlayers)
             gameReturnStatus = ConnectStatus.ServerIsFull;
 
         if(gameReturnStatus == ConnectStatus.Success)
         {
             clientSceneMap[clientID] = connectionPayload.clientScene;
             clientIDToGuid[clientID] = connectionPayload.clientGuid;
             clientData[connectionPayload.clientGuid] = new PlayerData(connectionPayload.playerName, clientID);
         }
 
         callback(false, 0, true, null, null);
 
         gameNetPortal.ServerToClientSetDisconnectReason(clientID, gameReturnStatus);
 
         if (gameReturnStatus != ConnectStatus.Success)
             StartCoroutine(WaitToDisconnectClient(clientID, gameReturnStatus));
     }
 
     private IEnumerator WaitToDisconnectClient(ulong clientID, ConnectStatus reason)
     {
         gameNetPortal.ServerToClientSetDisconnectReason(clientID, reason);
 
         yield return new WaitForSeconds(0);
 
         DisconnectThisClient(clientID);
     }
 
     private void DisconnectThisClient(ulong clientID)
     {
         NetworkObject networkObject = NetworkManager.Singleton.SpawnManager.GetPlayerNetworkObject(clientID);
         
         if (networkObject != null)
             networkObject.Despawn(true);
 
         NetworkManager.Singleton.DisconnectClient(clientID);
     }
 }

   

and:

 using TMPro;
 using Unity.Netcode;
 using UnityEngine;
 using UnityEngine.UI;
 
 public class Tank : NetworkBehaviour
 {
     public GameObject bullet;
     public Material enemyMaterial;
 
     private HealthBar localHealthBar;
     private ShieldBar shieldBar;
     private int localHealth = 5;
     private TMP_Text healthTxt;
     private int localShield = 0;
     private Rigidbody rb;
 
     public NetworkVariable<int> Health = new NetworkVariable<int>(5);
 
     void Start()
     {
         if (IsLocalPlayer)
         {
             // Set random start position for local player.
             transform.position = GetRandomPosition();
 
             // Get components of local player.
             healthTxt = GameObject.Find("healthTxt").GetComponent<TMP_Text>();
             localHealthBar = GameObject.Find("healthBar").GetComponent<HealthBar>();
             rb = GetComponent<Rigidbody>();
 
             // Set text to local health.
             healthTxt.text = localHealth.ToString();
 
             localHealthBar.SetMaxHealth(localHealth);
             localHealthBar.SetHealth(localHealth);
         }
         else
         {
             // Changes the colour of opponents' tanks.
             GetComponent<MeshRenderer>().material = enemyMaterial;
         }
     }
 
     void Update()
     {
         if (IsLocalPlayer)
             UpdateClient();
     }
 
     private void OnCollisionEnter(Collision collision)
     {
         if (collision.transform.CompareTag("Bullet"))
         {
             if(IsClient)
             {
                 // Update local health.
                 localHealth--;
                 healthTxt.text = localHealth.ToString();
                 localHealthBar.SetHealth(localHealth);
 
                 // Sync global health.
                 SetHealthServerRpc();
 
                 // If dead.
                 if(localHealth <= 0)
                 {
                     GetComponent<BoxCollider>().enabled = false;
                     Invoke("Respawn", 5);
                 }
             }
             // Removes bullet on hit.
             Destroy(collision.gameObject);
         }
     }
 
     [ServerRpc]
     void SetHealthServerRpc()
     {
         Health.Value = localHealth;
     }
 
     private void Respawn()
     {
         localHealth = 5;
         healthTxt.text = localHealth.ToString();
         localHealthBar.SetHealth(localHealth);
 
         SetHealthServerRpc();
 
         rb.velocity = Vector3.zero;
         transform.position = GetRandomPosition();
         GetComponent<BoxCollider>().enabled = true;
     }
 
     public void UpdateClient()
     {
         // Moves local player.
         Vector3 movement = Vector3.ClampMagnitude(new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")), 1);
         transform.position += movement * Time.deltaTime * 5;
 
         // Rotates local player.
         Quaternion newRotation = Quaternion.LookRotation(movement, Vector3.up);
         if(movement.magnitude > 0)
             transform.rotation = Quaternion.Lerp(transform.rotation, newRotation, Time.deltaTime * 5);
 
         // Allows local player to shoot.
         if (Input.GetButtonDown("Shoot"))
             SpawnBulletServerRpc();
     }
 
     public Vector3 GetRandomPosition()
     {
         return new Vector3(Random.Range(1, 5), 2, Random.Range(-20, -25));
     }
 
     // Spawns bullet on server.
     [ServerRpc]
     private void SpawnBulletServerRpc()
     {
         GameObject localBullet = Instantiate(bullet, transform.position + transform.forward * 3, transform.rotation);
         localBullet.GetComponent<NetworkObject>().Spawn();
     }
 }


Let me know if further context is needed, but I hope it's enough.


Comment
Add comment
10 |3000 characters needed characters left characters exceeded
â–¼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

2 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by WolverineLight · May 27 at 03:55 PM

Hello unity_VNomJxuy2kYlZg,

There are two ways to spawn a player: 1) Open a new scene where there is a player object already in the scene, or 2) Instantiate a player object. Perhaps you are doing this in another script? Without A or B, you will not spawn a new player. To further help you, when exactly are you trying to spawn in a player?

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
â–¼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image nachowasteland · May 28 at 07:37 AM 0
Share

@WolverineLight Basically, I'm dumb and I'm sorry for my poor explanation xD So I have a player prefab which is assigned to the default player prefab in Network Manager, so shouldn't it automatically spawn then when someone hosts/clients? The thing is, I have three different scenes (Menu, Lobby and one for the actual game) and in the menu, that's where you decide whether to host or client a game. After that, you get to the lobby where once all players have clicked ready, the scene change to the Main scene - without running StartHost() or StartClient(), since that's what we did before. What I want is that for each player spawn the player prefab when they get to the main game scene. Hope that makes it more clear - thanks for the reply ^^

avatar image
0

Answer by nachowasteland · May 30 at 06:14 AM

Thank you, @WolverineLight I realize now that my issue probably is that cx - so I decided to make a separate PlayerSpawner script.

 public class PlayerSpawner : NetworkBehaviour
 {
     [Header("References")]
     public GameObject playerPrefab;
 
     public override void OnNetworkSpawn()
     {
         SpawnPlayerServerRpc(NetworkManager.Singleton.LocalClientId);
     }
 
     [ServerRpc(RequireOwnership = false)]
     public void SpawnPlayerServerRpc(ulong clientID)
     {
         GameObject newPlayer;
         newPlayer = (GameObject)Instantiate(playerPrefab);
 
         NetworkObject networkObject = newPlayer.GetComponent<NetworkObject>();
         newPlayer.SetActive(true);
 
         networkObject.SpawnAsPlayerObject(clientID, true);
     }
 }

This script is located in the Main scene and so, if I'm not wrong, OnNetworkSpawn() will execute on the scene change because that's when it's created? Anyways, I was wondering in order to make it work (because it currently doesn't) should I use a foreach loop in order to spawn a player prefab for every connected client? That seems logical to me, but I didn't get it to work so some nudges in the correct direction would be nice :)

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
â–¼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image WolverineLight · May 30 at 04:23 PM 1
Share

You would want to instantiate a player "object", or whatever you would like to reference it as, every time someone joins the game. No need for a for loop.

I believe the "OnNetworkSpawn" method might be automatically called, but if not, make sure:

A. The PlayerSpawner script is enabled B. The PlayerSpawner gameObject is active

Write a print statement in the OnNetworkSpawn method to make sure it is running correctly as well. Let me know if this worked.

avatar image nachowasteland WolverineLight · Jun 01 at 02:21 AM 0
Share

@WolverineLight it works perfectly now, thank you so much!!!

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

855 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to automatically generate a new int with a specific name? 1 Answer

Save a list for refrence? 0 Answers

Does anyone have a good script that can be used to make a horse/vehicle rideable? 0 Answers

2D Platformer Gun Equip Script Not Working 0 Answers

Continuously monitor childrens properties 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges