2016-12-12 2 views
0

Я пытался настроить команду, используя сеть Photon Unity. Мой первый из двух вопросов касается старых кнопок GUI. Большинство ответов указывают на старую версию quill18 в серии FPS, № 19 и 20. Проблема заключается в использовании старых кнопок GUI, и он использовал какой-то код для автоматического размещения его в центре сцены. Эта позиция скрывает кнопки в фоновом изображении. Я попытался заменить значение Y в методе OnGui, чтобы опустить нижнюю треть, но ничего не происходит. Как я могу опустить эти кнопки? Кажется, это проще, чем пытаться заменить старый новым графическим интерфейсом.Перемещение старых кнопок GUI Unity в старом учебнике

using UnityEngine; 
using System.Collections.Generic; 

public class NetworkManager : MonoBehaviour { 

    public GameObject standbyCamera; 
    SpawnSpot[] spawnSpots; 

    public bool offlineMode = false; 

    bool connecting = false; 

    List<string> chatMessages; 
    int maxChatMessages = 5; 

    public float respawnTimer = 0; 

    bool hasPickedTeam = false; 
    int teamID=0; 

    // Use this for initialization 
    void Start() { 
     spawnSpots = GameObject.FindObjectsOfType<SpawnSpot>(); 
     PhotonNetwork.player.name = PlayerPrefs.GetString("Username", "Awesome Dude"); 
     chatMessages = new List<string>(); 
    } 

    void OnDestroy() { 
     PlayerPrefs.SetString("Username", PhotonNetwork.player.name); 
    } 

    public void AddChatMessage(string m) { 
     GetComponent<PhotonView>().RPC ("AddChatMessage_RPC", PhotonTargets.AllBuffered, m); 
    } 

    [PunRPC] 
    void AddChatMessage_RPC(string m) { 
     while(chatMessages.Count >= maxChatMessages) { 
      chatMessages.RemoveAt(0); 
     } 
     chatMessages.Add(m); 
    } 

    void Connect() { 
     PhotonNetwork.ConnectUsingSettings("MultiFPS v004"); 
    } 

    void OnGUI() { 
     GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString()); 

     if(PhotonNetwork.connected == false && connecting == false) { 
      // We have not yet connected, so ask the player for online vs offline mode. 
      GUILayout.BeginArea(new Rect(0, 0, Screen.width, Screen.height)); 
      GUILayout.BeginHorizontal(); 
      GUILayout.FlexibleSpace(); 
      GUILayout.BeginVertical(); 
      GUILayout.FlexibleSpace(); 

      GUILayout.BeginHorizontal(); 
      GUILayout.Label("Username: "); 
      PhotonNetwork.player.name = GUILayout.TextField(PhotonNetwork.player.name); 
      GUILayout.EndHorizontal(); 

      if(GUILayout.Button("Single Player")) { 
       connecting = true; 
       PhotonNetwork.offlineMode = true; 
       OnJoinedLobby(); 
      } 

      if(GUILayout.Button("Multi Player")) { 
       connecting = true; 
       Connect(); 
      } 

      GUILayout.FlexibleSpace(); 
      GUILayout.EndVertical(); 
      GUILayout.FlexibleSpace(); 
      GUILayout.EndHorizontal(); 
      GUILayout.EndArea(); 
     } 

     if(PhotonNetwork.connected == true && connecting == false) { 

      if(hasPickedTeam) { 
       // We are fully connected, make sure to display the chat box. 
       GUILayout.BeginArea(new Rect(0, 0, Screen.width, Screen.height)); 
       GUILayout.BeginVertical(); 
       GUILayout.FlexibleSpace(); 

       foreach(string msg in chatMessages) { 
        GUILayout.Label(msg); 
       } 

       GUILayout.EndVertical(); 
       GUILayout.EndArea(); 
      } 
      else { 
       // Player has not yet selected a team. 

       GUILayout.BeginArea(new Rect(0, 0, Screen.width, Screen.height)); 
       GUILayout.BeginHorizontal(); 
       GUILayout.FlexibleSpace(); 
       GUILayout.BeginVertical(); 
       GUILayout.FlexibleSpace(); 

       if(GUILayout.Button("Red Team")) { 
        SpawnMyPlayer(1); 
       } 

       if(GUILayout.Button("Green Team")) { 
        SpawnMyPlayer(2); 
       } 

       if(GUILayout.Button("Random")) { 
        SpawnMyPlayer(Random.Range(1,3)); // 1 or 2 
       } 

       if(GUILayout.Button("Renegade!")) { 
        SpawnMyPlayer(0); 
       } 

       GUILayout.FlexibleSpace(); 
       GUILayout.EndVertical(); 
       GUILayout.FlexibleSpace(); 
       GUILayout.EndHorizontal(); 
       GUILayout.EndArea(); 


      } 

     } 

    } 

    void OnJoinedLobby() { 
     Debug.Log ("OnJoinedLobby"); 
     PhotonNetwork.JoinRandomRoom(); 
    } 

    void OnPhotonRandomJoinFailed() { 
     Debug.Log ("OnPhotonRandomJoinFailed"); 
     PhotonNetwork.CreateRoom(null); 
    } 

    void OnJoinedRoom() { 
     Debug.Log ("OnJoinedRoom"); 

     connecting = false; 
     //SpawnMyPlayer(); 
    } 

    void SpawnMyPlayer(int teamID) { 
     this.teamID = teamID; 
     hasPickedTeam = true; 
     AddChatMessage("Spawning player: " + PhotonNetwork.player.name); 

     if(spawnSpots == null) { 
      Debug.LogError ("WTF?!?!?"); 
      return; 
     } 

     SpawnSpot mySpawnSpot = spawnSpots[ Random.Range (0, spawnSpots.Length) ]; 
     GameObject myPlayerGO = (GameObject)PhotonNetwork.Instantiate("PlayerController", mySpawnSpot.transform.position, mySpawnSpot.transform.rotation, 0); 
     standbyCamera.SetActive(false); 

     //((MonoBehaviour)myPlayerGO.GetComponent("FPSInputController")).enabled = true; 
     ((MonoBehaviour)myPlayerGO.GetComponent("MouseLook")).enabled = true; 
     ((MonoBehaviour)myPlayerGO.GetComponent("PlayerMovement")).enabled = true; 
     ((MonoBehaviour)myPlayerGO.GetComponent("PlayerShooting")).enabled = true; 

     myPlayerGO.GetComponent<TeamMember>().teamID = teamID; 
     SkinnedMeshRenderer mySkin = myPlayerGO.transform.GetComponentInChildren<SkinnedMeshRenderer>(); 

     if(mySkin == null) { 
      Debug.LogError("Couldn't find a SkinnedMeshRenderer!"); 
     } 

     if(teamID==1) 
      mySkin.material.color = Color.red; 
     if(teamID==2) 
      mySkin.material.color = new Color(.5f, 1f, .5f); 

     myPlayerGO.transform.FindChild("Main Camera").gameObject.SetActive(true); 
    } 

    void Update() { 
     if(respawnTimer > 0) { 
      respawnTimer -= Time.deltaTime; 

      if(respawnTimer <= 0) { 
       // Time to respawn the player! 
       SpawnMyPlayer(teamID); 
      } 
     } 
    } 
} 

ответ

1

Я бы настоятельно рекомендовал обновить новый интерфейс.

попытаться вставить GUILayout.Space рядом с гибким пространством https://docs.unity3d.com/ScriptReference/GUILayout.Space.html

Это обычно помогает много двигаться вещи в гибких макетов контента.

Bye,

Жан

Смежные вопросы