为了账号安全,请及时绑定邮箱和手机立即绑定

Unity 场景加载时间非常长

Unity 场景加载时间非常长

C#
阿波罗的战车 2022-10-23 15:20:06
我对 Unity 还很陌生,所以对 IDE 没有太多经验。我正在开发一个非常基本的应用程序、一个登录和一个带有一些基本 UI 元素的仪表板。我遇到的问题是当我尝试切换场景时。因此,从 LoginScene 到 Dashboard 场景最多可能需要 20 秒。脚本甚至不需要运行太多逻辑。在我看来,这太长了,有人知道如何优化我的代码,或者至少知道我做错了什么?这是检查正确用户和更改场景的代码。// Start is called before the first frame updatevoid Start(){    Screen.orientation = ScreenOrientation.Portrait;}// Update is called once per framevoid Update(){    //get values from inputfields    emailString = email.GetComponent<InputField>().text;    passwordString = password.GetComponent<InputField>().text;    btnLogin = login.GetComponent<Button>();    btnLogin.onClick.AddListener(ValidateLogin);}private void ValidateLogin(){    if (emailString.Trim() == "aa" && passwordString.Trim() == "aa")    {        print("login succeeded!");        SceneManager.LoadScene(1);    }    else    {        print("wrong credentials");    }}顺便说一句:数字 1 是对我的下一个场景的引用,即仪表板场景。
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

GetComponent<>()是一项资源密集型任务,并且您不必要地调用其中的 3 个,您还每帧添加一个事件侦听器。


您应该做的是:阅读 Update、Awake、Start 所做的事情,然后删除该GetComponent<>()部分并改用属性或字段,并且不要每帧都添加事件侦听器。


InputField emailInputField;

InputField passwordInputField;

Button loginButton;


// Setting up the Scene

void Awake()

{

    emailInputField = email.GetComponent<Inputfield>();

    passwordInputField = password.GetComponent<InputField>();

    loginButton = login.GetComponent<Button>();


    loginButton.onClick.AddListener(ValidateLogin);

}


// Start is called before the first frame update

void Start()

{

    Screen.orientation = ScreenOrientation.Portrait;

}


// Update is called once per frame

void Update()

{

    //get values from inputfields

    emailString = emailInputField.text;

    passwordString = passwordInputField.text;

}


private void ValidateLogin()

{

    if (emailString.Trim() == "aa" && passwordString.Trim() == "aa")

    {

        print("login succeeded!");


        SceneManager.LoadScene(1);

    }

    else

    {

        print("wrong credentials");

    }


}


查看完整回答
反对 回复 2022-10-23
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

转换我的评论:Listener 被添加到 中Update(),而不是Start(). 因此,它被分配到每一帧。



查看完整回答
反对 回复 2022-10-23
  • 2 回答
  • 0 关注
  • 274 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信