Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 $$anonymous$$ · Jun 30, 2017 at 08:42 PM · c#unity 5characterunityeditorselection

Plane character selector unity problem

I'm stuck in the past two days in how to do a character selection with a buying button by the guldens , the toggling works fine but there's something wrong with the character here's screenshot's .

I want when i toggle right or left to be in the same position and i tried to much to fix this and till now there's no result

[1]: https://i.stack.imgur.com/cB2Rl.jpg

When i toggle left or right its look like this

[2]: https://i.stack.imgur.com/FPRYJ.jpg

Here's my code

That's the MenuScene scrpit

 using System;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;
 using UnityEngine.SceneManagement;
 
 public class MenuScene : MonoBehaviour {
 
     private CanvasGroup fadeGroup;
     private float fadeInSpeed = 0.33f;
 
     public RectTransform menuContainer;
     public Transform levelPanel;
     public Transform colorPanel;
     public Transform trailPanel;
 
     public Button tiltControlButton; // Change the name of the button
     public Color tiltControlEnabled;
     public Color tiltControlDisabled;
 
     public Text buyColorText;
     public Text buyTrailText;
     public Text goldText;
 
     private MenuCamera menuCam;
 
     private int[] colorCost = new int[] { 0, 5, 5, 5, 10, 10, 10, 15, 15, 10, 0, 5, 5, 5, 10, 10};
     private int[] trailCost = new int[] { 0, 20, 30, 40, 50, 60, 70, 80, 90, 100, 5, 5, 5, 10, 10 };
     private int selectedColorIndex;
     private int selectedTrailIndex;
     private int activeColorIndex;
     private int activeTrailIndex;
 
     private Vector3 desiredMenuPosition;
 
     private GameObject currentTrail;
 
     public AnimationCurve enteringLevelZoomCurve;
     private bool isEnteringLevel = false;
     private float zoomDuration = 3.0f;
     private float zoomTransition;
 
 
   private void Start()
     {
 
         // Check if we have an accelerometer
         if(SystemInfo.supportsAccelerometer)
         {
             // It is currently enabled ?
             tiltControlButton.GetComponent<Image>().color = (SaveManager.Instance.state.usingAccelerometer) ? tiltControlEnabled : tiltControlDisabled;
         }
         else
         {
             tiltControlButton.gameObject.SetActive(false);
         }
 
         //Find the only MenuCamera and assign it
         menuCam = FindObjectOfType<MenuCamera>();
 
 
         // Position our camera on the focused menu
         SetCameraTo(Manager.Instance.menuFocus);
 
         // Tell our gold text how much he should displaying 
         UpdateGoldText();
         //Grab the only canvasGroup in the scene 
         fadeGroup = FindObjectOfType<CanvasGroup>();
 
         //Start with a white screen 
         fadeGroup.alpha = 1;
 
         // Add button on-click events to shop buttons
         InItShop();
 
         //Add button on-Click events to levels 
         InitLevel();
 
         // Set players prefrences ( color & trail )
         OnColorSelect(SaveManager.Instance.state.activeColor);
         SetColor(SaveManager.Instance.state.activeColor);
 
         OnTrailSelect(SaveManager.Instance.state.activeTrail);
         SetTrail(SaveManager.Instance.state.activeTrail);
 
         // Make the buttons bigger for the selected items
         colorPanel.GetChild(SaveManager.Instance.state.activeColor).GetComponent<RectTransform>().localScale = Vector3.one * 1.125f;
         trailPanel.GetChild(SaveManager.Instance.state.activeTrail).GetComponent<RectTransform>().localScale = Vector3.one * 1.125f;
 
         // Create the trail preview 
         /*lastpreviewObject = GameObject.Instantiate(Manager.Instance.playertrails[SaveManager.Instance.state.activeTrail]) as GameObject;
         lastpreviewObject.transform.SetParent(trailPreviewObject);
         lastpreviewObject.transform.localPosition = Vector3.zero;*/
 
     }
 
     private void Update()
     {
         // Fade-in
         fadeGroup.alpha = 1 - Time.timeSinceLevelLoad * fadeInSpeed;
 
         //Menu navigation
         menuContainer.anchoredPosition3D = Vector3.Lerp(menuContainer.anchoredPosition3D, desiredMenuPosition, 0.1f);
 
         // Entering level zoom
         if(isEnteringLevel)
         {
             // Add to the zoomTransition float 
             zoomTransition += (1 / zoomDuration) * Time.deltaTime;
 
             // Change the scale, following the animation curve 
             menuContainer.localScale = Vector3.Lerp(Vector3.one, Vector3.one * 5, enteringLevelZoomCurve.Evaluate(zoomTransition));
 
             // Change the desired position of the canvas , so it can follow the scale up
             // This zooms in the center 
             Vector3 newDesiredPosition = desiredMenuPosition * 5;
             // This adds to the specific position of the level on the canvas 
             RectTransform rt = levelPanel.GetChild(Manager.Instance.currentLevel).GetComponent<RectTransform>();
             newDesiredPosition -= rt.anchoredPosition3D * 5;
 
             // This line will override the previous position
             menuContainer.anchoredPosition3D = Vector3.Lerp(desiredMenuPosition, newDesiredPosition, enteringLevelZoomCurve.Evaluate(zoomTransition));
 
             // Fade to white screen , this will override the first line in the update 
             fadeGroup.alpha = zoomTransition;
 
             // Are we done with the animation 
             if(zoomTransition >= 1)
             {
                 // Enter the level 
                 SceneManager.LoadScene("Game");
             }
         }
 
     } 
 
     private void InItShop()
     {
         // Just make sure we've assigned the referencess
         if (colorPanel == null || trailPanel == null)
             Debug.Log("You didnt not asign the color/trail panel in the inspector");
 
         //For every children transfrom under our color panel , find the button and add onClick
         int i = 0;
         foreach (Transform t in colorPanel)
         {
             int currentIndex = i;
 
             Button b = t.GetComponent<Button>();
             b.onClick.AddListener(() => OnColorSelect(currentIndex));
 
             // Set color of the image, based on if owned or not
             Image img = t.GetComponent<Image>();
             img.color = SaveManager.Instance.IsTrailOwned(i)
                 ? Manager.Instance.playerColors[currentIndex]
                 : Color.Lerp(Manager.Instance.playerColors[currentIndex], new Color(0, 0, 0, 1), 0.25f);
 
             i++;
         }
         //Reset index 
         i = 0;
         //Do the same for the trail 
         foreach (Transform t in trailPanel)
         {
             int currentIndex = i;
 
             Button b = t.GetComponent<Button>();
             b.onClick.AddListener(() => OnTrailSelect(currentIndex));
 
             // Set trail of the image, based on if owned or not
             RawImage img = t.GetComponent<RawImage>();
             img.color = SaveManager.Instance.IsColorOwned(i) ? Color.white : new Color (0.7f, 0.7f, 0.7f);
 
             i++;
         }
 
         // Set the previous trail , to prevent bug when spawing later 
        // previousTrail = trailPanel.GetChild(SaveManager.Instance.state.activeTrail).GetComponent<RawImage>().texture;
     }
 
     private void InitLevel()
     {
         // Just make sure we've assigned the referencess
         if (levelPanel == null )
             Debug.Log("You didnt not asign the level panel in the inspector");
 
         //For every children transfrom under our level panel , find the button and add onClick
         int i = 0;
         foreach (Transform t in levelPanel)
         {
             int currentIndex = i;
 
             Button b = t.GetComponent<Button>();
             b.onClick.AddListener(() => OnLevelSelect(currentIndex));
 
             Image img = t.GetComponent<Image>();
 
             // Is it unlocked ?
             if (i <= SaveManager.Instance.state.completedLevel)
             {
                 //It is unlocked!
                 if(i == SaveManager.Instance.state.completedLevel)
                 {
                     //It's not completed !
                     img.color = Color.white;
                 }
                 else
                 {
                     // level is already completed !
                     img.color = Color.green;
                 }
             }
             else
             {
                 // Level isn't unlock , disable the button
                 b.interactable = false;
 
                 // Set to a dark color
                 img.color = Color.grey; 
             }
             i++;
         }
     }
 
     private void SetCameraTo(int menuIndex)
     {
         NavigateTo(menuIndex);
         menuContainer.anchoredPosition3D = desiredMenuPosition;
     }
 
     private void NavigateTo(int menuIndex)
     {
         switch(menuIndex)
         {
             // 0 && default case = main menu 
             default:
             case 0:
                 desiredMenuPosition = Vector3.zero;
                 menuCam.BackToMainMenu();
                 break;
             // 1 = play menu
             case 1:
                 desiredMenuPosition = Vector3.right * 1280;
                 menuCam.MoveToLevel();
                 break;
             // 2= shop menu
             case 2:
                 desiredMenuPosition = Vector3.left * 1280;
                 menuCam.MoveToShop();
                 break;
         }
     }
 
     private void SetColor(int index)
     {
         // Set the active index 
         activeColorIndex = index;
         SaveManager.Instance.state.activeColor = index;
 
         //Change the color of the player 
         Manager.Instance.playerMaterial.color = Manager.Instance.playerColors[index];
 
         //change buy/set button text
         buyColorText.text = "Current";
 
         // Remember prefrences
         SaveManager.Instance.Save();
     }
 
     private void SetTrail(int index)
     {
         // Set the active index
         activeTrailIndex = index;
         SaveManager.Instance.state.activeTrail = index;
 
         //Change the trail of the player
         if (currentTrail != null)
             Destroy(currentTrail);
 
         // Create the new trail
         currentTrail = Instantiate(Manager.Instance.playertrails[index]) as GameObject;
 
         // Set it as a children of the player
         currentTrail.transform.SetParent(FindObjectOfType<MenuPlayer>().transform);
 
         // Fix the wierd scalling issues / rotation issues
         currentTrail.transform.localPosition = Vector3.zero;
         currentTrail.transform.localRotation = Quaternion.Euler(0, 0, 90);
         currentTrail.transform.localScale = Vector3.one * 0.01f; 
 
         //change buy/set button text
         buyTrailText.text = "Current";
 
         // Remember prefrences
         SaveManager.Instance.Save();
     }
 
     private void UpdateGoldText()
     {
         goldText.text = SaveManager.Instance.state.gold.ToString();
     }
 
     //Buttons
     public void OnPlayClick()
     {
         NavigateTo(1);
         Debug.Log("Play Button Has Been Clicked");
     }
 
     public void OnShopClick()
     {
         NavigateTo(2);
         Debug.Log("Your in the shop");
     }
 
     public void OnBackClick()
     {
         NavigateTo(0);
         Debug.Log("Back button has been clicked");
     }
 
     private void OnTrailSelect(int currentIndex)
     {
         Debug.Log("Selecting trail button : " + currentIndex);
 
         // If the button clicked is already selected, exist 
         if (selectedTrailIndex == currentIndex)
             return;
 
         // Preview trail
         // Get the image of the preview button
         //trailPanel.GetChild(selectedTrailIndex).GetComponent<RawImage>().texture = previousTrail;
         // Keep the new trails preview image in the previous trail
         //previousTrail = trailPanel.GetChild(currentIndex).GetComponent<RawImage>().texture;
         // Set the new trail preview image to the other camera
         //trailPanel.GetChild(currentIndex).GetComponent<RawImage>().texture = trailPreviewTexture;
 
         //  Change the physical object of the trail preview
        /* if (lastpreviewObject != null)
             Destroy(lastpreviewObject);
         lastpreviewObject = GameObject.Instantiate(Manager.Instance.playertrails[currentIndex]) as GameObject;
         lastpreviewObject.transform.SetParent(trailPreviewObject);
         lastpreviewObject.transform.localPosition = Vector3.zero;*/
 
         // Make the icon slightly bigger 
         trailPanel.GetChild(currentIndex).GetComponent<RectTransform>().localScale = Vector3.one * 1.125f;
         // Put the previuos one on normal scale
         trailPanel.GetChild(selectedTrailIndex).GetComponent<RectTransform>().localScale = Vector3.one;
 
 
         // Set the selected color 
         selectedTrailIndex = currentIndex;
 
         //Change the content of the buy/set button button , depending on the state of the color 
         if (SaveManager.Instance.IsTrailOwned(currentIndex))
         {
             // Trail is owned 
             // Is it already our current color ?
             if (activeTrailIndex == currentIndex)
             {
                 buyTrailText.text = "Current";
             }
             else
             {
                 buyTrailText.text = "Select";
             }
         }
         else
         {
             // Trail isnt owned
             buyTrailText.text = "Buy:" + trailCost[currentIndex].ToString();
         }
     }
 
     private void OnColorSelect(int currentIndex)
     {
         Debug.Log("Selecting Color button : " + currentIndex);
 
         // If the button clicked is already selected, exist 
         if (selectedColorIndex == currentIndex)
             return;
 
         // Make the icon slightly bigger 
         colorPanel.GetChild(currentIndex).GetComponent<RectTransform>().localScale = Vector3.one * 1.125f;
         // Put the previuos one on normal scale
         colorPanel.GetChild(selectedColorIndex).GetComponent<RectTransform>().localScale = Vector3.one;
 
         // Set the selected color 
         selectedColorIndex = currentIndex;
 
         //Change the content of the buy/set button button , depending on the state of the color 
         if(SaveManager.Instance.IsColorOwned(currentIndex))
         {
             // color is owned
             // Is it already our current color ?
             if(activeColorIndex == currentIndex)
             {
                 buyColorText.text = "Current";
             }
             else
             {
                 buyColorText.text = "Select";
             }
 
         }
         else
         {
             // Color isnt owned
             buyColorText.text = "Buy: " + colorCost[currentIndex].ToString();
         }
     }
 
     private void OnLevelSelect(int currentIndex)
     {
         Manager.Instance.currentLevel = currentIndex;
         isEnteringLevel = true;
         Debug.Log("Selecting level : " + currentIndex);
     }
 
     public void OnColorBuy()
     {
         Debug.Log("Buy color");
 
         // Is the selected color owned
         if(SaveManager.Instance.IsColorOwned(selectedColorIndex))
         {
             // Set the color !
             SetColor(selectedColorIndex);
         }
         else
         {
             // Attempt to buy the color 
             if (SaveManager.Instance.BuyColor(selectedColorIndex, colorCost[selectedColorIndex]))
             {
                 // Success!
                 SetColor(selectedColorIndex);
 
                 // Change the color of the button 
                 colorPanel.GetChild(selectedColorIndex).GetComponent<Image>().color = Manager.Instance.playerColors[selectedColorIndex];
 
 
                 //Update gold text
                 UpdateGoldText();
             }
             else
             {
                 // Dont have enough gold
                 // Play sound feedback  
                 Debug.Log("Not enough gold");
             }
         }
     }
 
     public void OnTrailBuy()
     {
         Debug.Log("Buy Trail");
 
         // Is the selected trail owned
         if (SaveManager.Instance.IsTrailOwned(selectedTrailIndex))
         {
             // Set the trail !
             SetTrail(selectedTrailIndex);
         }
         else
         {
             // Attempt to buy the trail 
             if (SaveManager.Instance.BuyTrail(selectedTrailIndex, trailCost[selectedTrailIndex]))
             {
                 // Success!
                 SetTrail(selectedTrailIndex);
 
                 // Change the color of the button 
                 trailPanel.GetChild(selectedTrailIndex).GetComponent<Image>().color = Color.white;
 
                 //Update gold text
                 UpdateGoldText();
             }
             else
             {
                 // Dont have enough gold
                 // Play sound feedback  
                 Debug.Log("Not enough gold");
             }
         }
     }
 
     public void OnTiltControl()
     {
         // Toggle the accelerometer bool 
         SaveManager.Instance.state.usingAccelerometer = !SaveManager.Instance.state.usingAccelerometer;
 
         // Make sure we save the player's preferences
         SaveManager.Instance.Save();
 
         // Change the display image of the tilt control button
         tiltControlButton.GetComponent<Image>().color = (SaveManager.Instance.state.usingAccelerometer) ? tiltControlEnabled : tiltControlDisabled;
     }
 
 }

Plane Selection scrpit

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.SceneManagement;
 
 public class PlaneSelection : MonoBehaviour {
 
     private GameObject[] characterList;
 
     private int index;
 
     private void Start()
     {
         index = PlayerPrefs.GetInt("CharacterSelected");
 
         characterList = new GameObject[transform.childCount];
 
         // Fill the array with our models 
         for (int i = 0; i < transform.childCount; i++)
             characterList[i] = transform.GetChild(i).gameObject;
 
         // We toggle off their render
         foreach (GameObject go in characterList)
             go.SetActive(false);
 
         // We toggle on the selected character
         if (characterList[index])
             characterList[index].SetActive(true);
     }
 
     public void ToggleLeft()
     {
         // Toggle off the current model
         characterList[index].SetActive(false);
 
         index--;//index -= 1 , index - 1;
         if (index < 0)
             index = characterList.Length - 1;
 
         // Toggle on the new model
         characterList[index].SetActive(true);
     }
 
     public void ToggleRight()
     {
         // Toggle off the current model
         characterList[index].SetActive(false);
 
         index++;//index -= 1 , index - 1;
         if (index == characterList.Length)
             index = 0;
 
         // Toggle on the new model
         characterList[index].SetActive(true);
     }
 
     public void ConfirmButton()
     {
         PlayerPrefs.SetInt("CharacterSelected", index);
         SceneManager.LoadScene("Game");
     }
 }


Menu Camera script

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class MenuCamera : MonoBehaviour {
 
     private Vector3 startPosition;
     private Quaternion startRotation;
 
     private Vector3 desiredPosition;
     private Quaternion desiredRotation;
 
     public Transform shopWaypoint;
     public Transform levelWaypoint;
 
     private void Start()
     {
         startPosition = desiredPosition = transform.localPosition;
         startRotation = desiredRotation = transform.localRotation;
     }
 
     private void Update()
     {
         float x = Manager.Instance.GetPlayerInput().x;
 
         transform.localPosition = Vector3.Lerp(transform.localPosition, desiredPosition + new Vector3(0, x, 0) * 0.01f, 0.1f);
         transform.localRotation = Quaternion.Lerp(transform.localRotation, desiredRotation, 0.1f);
     }
 
     public void BackToMainMenu()
     {
         desiredPosition = startPosition;
         desiredRotation = startRotation;
     }
 
     public void MoveToShop()
     {
         desiredPosition = shopWaypoint.localPosition;
         desiredRotation = shopWaypoint.localRotation;
     }
 
     public void MoveToLevel()
     {
         desiredPosition = levelWaypoint.localPosition;
         desiredRotation = levelWaypoint.localRotation;
     }
 }
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

0 Replies

· Add your reply
  • Sort: 

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

366 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

Related Questions

How to get a box cast to fit around the GameObject? 0 Answers

How to change image sprite with text multiple times with button? 1 Answer

UNET Multiple online scenes 0 Answers

How to load level after typing somthing? 1 Answer

how to connect WEBRTC in unity ? 2 Answers


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