Unity C# 可滚动 GUI.BOX 无法在 android 上工作
Unity C# scrollable GUI.BOX not working on android
我有一个 GUI
我在点击商店按钮时正在绘制,有 GUI.BeginScrollView
和一些按钮,无论如何,我的滚动视图只能在统一编辑器中工作,如果我 运行 phone 上的这个不起作用,我看到按钮但没有滚动条。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Shop : MonoBehaviour
{
private bool PopUp;
public string Info;
public Touch touch;
public Vector2 scrollPosition = Vector2.zero;
void Update()
{
if (Input.touchCount > 0)
{
touch = Input.touches[0];
if (touch.phase == TouchPhase.Moved)
{
scrollPosition.y += touch.deltaPosition.y;
}
}
}
void OnGUI()
{
Rect rect = new Rect(Screen.width / 4, Screen.height / 4, Screen.width / 2, Screen.height / 2);
Rect close = new Rect(Screen.width / 4 + Screen.width / 2, Screen.height / 4, Screen.width / 30, Screen.width / 30);
Rect a= new Rect(0, 0, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect b= new Rect(0, Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect c= new Rect(0, 2 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect d= new Rect(0, 3 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect e= new Rect(0, 4 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect f= new Rect(0, 5 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
if (PopUp)
{
GUIStyle myStyle = new GUIStyle(GUI.skin.button);
float sizesc = Mathf.Sqrt(Mathf.Pow(Screen.width, 2) + Mathf.Pow(Screen.height, 2));
myStyle.fontSize = (int)(0.015f * sizesc);
scrollPosition = GUI.BeginScrollView(rect, scrollPosition, new Rect(0, 0, 0, PlayerPrefs.GetInt("unlocked") * Screen.height/10f + 10));
if (GUI.Button(a, "Buy a", myStyle))
{
//do something
}
if (GUI.Button(b, "Buy b", myStyle))
{
//do something
}
if (GUI.Button(c, "Buy c", myStyle))
{
//do something
}
if (GUI.Button(d, "Buy d", myStyle))
{
//do something
}
if (PlayerPrefs.GetInt("e") > 0)
{
if (GUI.Button(e, "Buy e", myStyle))
{
//do something
}
}
if (PlayerPrefs.GetInt("f") > 0)
{
if (GUI.Button(f, "Buy f", myStyle))
{
//do something
}
}
GUI.EndScrollView();
if (GUI.Button(close, "X"))
{
PopUp = false;
}
}
}
public void onClick()
{
PopUp = true;
}
}
我不明白为什么它只适用于 UnityEditor 而不适用于我的 android 设备。
解决方案是更改此行:
scrollPosition = GUI.BeginScrollView(rect, scrollPosition, new Rect(0, 0, 0, PlayerPrefs.GetInt("unlocked") * Screen.height/10f));
表示按钮个数*按钮高度,为:
scrollPosition = GUI.BeginScrollView(rect, scrollPosition, new Rect(0, 0, 0, PlayerPrefs.GetInt("unlocked") * Screen.height/10f + 10));
只是使 Gui.BeginScrollView
按钮的长度变大一点。
我有一个 GUI
我在点击商店按钮时正在绘制,有 GUI.BeginScrollView
和一些按钮,无论如何,我的滚动视图只能在统一编辑器中工作,如果我 运行 phone 上的这个不起作用,我看到按钮但没有滚动条。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Shop : MonoBehaviour
{
private bool PopUp;
public string Info;
public Touch touch;
public Vector2 scrollPosition = Vector2.zero;
void Update()
{
if (Input.touchCount > 0)
{
touch = Input.touches[0];
if (touch.phase == TouchPhase.Moved)
{
scrollPosition.y += touch.deltaPosition.y;
}
}
}
void OnGUI()
{
Rect rect = new Rect(Screen.width / 4, Screen.height / 4, Screen.width / 2, Screen.height / 2);
Rect close = new Rect(Screen.width / 4 + Screen.width / 2, Screen.height / 4, Screen.width / 30, Screen.width / 30);
Rect a= new Rect(0, 0, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect b= new Rect(0, Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect c= new Rect(0, 2 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect d= new Rect(0, 3 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect e= new Rect(0, 4 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
Rect f= new Rect(0, 5 * Screen.height / 10, Screen.width / 2 - 2 * Screen.width / 50, Screen.height / 10);
if (PopUp)
{
GUIStyle myStyle = new GUIStyle(GUI.skin.button);
float sizesc = Mathf.Sqrt(Mathf.Pow(Screen.width, 2) + Mathf.Pow(Screen.height, 2));
myStyle.fontSize = (int)(0.015f * sizesc);
scrollPosition = GUI.BeginScrollView(rect, scrollPosition, new Rect(0, 0, 0, PlayerPrefs.GetInt("unlocked") * Screen.height/10f + 10));
if (GUI.Button(a, "Buy a", myStyle))
{
//do something
}
if (GUI.Button(b, "Buy b", myStyle))
{
//do something
}
if (GUI.Button(c, "Buy c", myStyle))
{
//do something
}
if (GUI.Button(d, "Buy d", myStyle))
{
//do something
}
if (PlayerPrefs.GetInt("e") > 0)
{
if (GUI.Button(e, "Buy e", myStyle))
{
//do something
}
}
if (PlayerPrefs.GetInt("f") > 0)
{
if (GUI.Button(f, "Buy f", myStyle))
{
//do something
}
}
GUI.EndScrollView();
if (GUI.Button(close, "X"))
{
PopUp = false;
}
}
}
public void onClick()
{
PopUp = true;
}
}
我不明白为什么它只适用于 UnityEditor 而不适用于我的 android 设备。
解决方案是更改此行:
scrollPosition = GUI.BeginScrollView(rect, scrollPosition, new Rect(0, 0, 0, PlayerPrefs.GetInt("unlocked") * Screen.height/10f));
表示按钮个数*按钮高度,为:
scrollPosition = GUI.BeginScrollView(rect, scrollPosition, new Rect(0, 0, 0, PlayerPrefs.GetInt("unlocked") * Screen.height/10f + 10));
只是使 Gui.BeginScrollView
按钮的长度变大一点。