草庐IT

unity——通过点击按钮进行场景切换

行秋 2023-10-08 原文

前记

通过点击鼠标进行场景切换请参考:

Unity——通过点击鼠标进行场景切换_行秋的博客-CSDN博客通过点击按钮进行场景切换请参考:unity——通过点击按钮进行场景切换_行秋的博客-CSDN博客1.准备两个示例场景 2.点击File—>Build Settings...,将场景添加到视图中,点击Build。选择文件夹进行保存。(建议将文件打包到空的文件夹)3.为场景添加Button(UI)在Hierarchy视图中空白处右键,选择UI—>Button - TextMeshPro。 添加完成后修改合适的位置。 4. 编写代码。新建一个C# Script文件,编写代码如下:可编写不同语句选择是否在切换场景后https://blog.csdn.net/weixin_43042683/article/details/128206777?spm=1001.2014.3001.5502

操作

1.准备两个示例场景

 2.点击File—>Build Settings...,将场景添加到视图中,点击Build。选择文件夹进行保存。(建议将文件打包到空的文件夹

3.为场景添加Button(UI)

在Hierarchy视图中空白处右键,选择UI—>Button - TextMeshPro。

 添加完成后修改合适的位置。

 4. 编写代码。

新建一个C# Script文件,编写代码如下:

可编写不同语句选择是否在切换场景后销毁前场景。

(1)切换场景后销毁前场景

SceneManager.LoadScene(场景的索引);

或者 SceneManager.LoadScene("场景的名字"); //英文双引号

(3)切换场景后不销毁前场景

SceneManager.LoadScene(场景的索引, LoadSceneMode.Additive);

或者SceneManager.LoadScene("场景的名字", LoadSceneMode.Additive);//英文双引号

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//调用UnityEngine中的UI函数
using UnityEngine.UI;
//调用SceneManagement函数
using UnityEngine.SceneManagement;

public class LoadScene : MonoBehaviour
{
    //进行场景切换的函数
    public void Scene1()
    {
        SceneManager.LoadScene(0);//切换场景后销毁前场景
        //SceneManager.LoadScene(0, LoadSceneMode.Additive);//切换场景后不销毁前场景
    }
    public void Scene2()
    {
        SceneManager.LoadScene(1);//切换场景后销毁前场景
        //SceneManager.LoadScene(1, LoadSceneMode.Additive);//切换场景后不销毁前场景
    }
    //退出的函数
    public void myExit()
    {
        Application.Quit();
    }
}

5. 创建空物体,放在Canvas下用来挂载脚本。(其实这个空物体位置在那都行,可自由放置,将脚本加载到空物体上)

 6.选中Button,在Inspector中点击On Click()的"+",根据下图将空物体拖拽。

点击No Function选择脚本中的方法,由于场景1需要切换到场景2,所以选择的是Scene2()方法。 

效果

点击运行,查看效果。

(1)切换场景后销毁前场景

SceneManager.LoadScene(这里填场景的索引);

(2)切换场景后不销毁前场景

SceneManager.LoadScene(这里填场景的索引, LoadSceneMode.Additive);

 

备注

创建另一个场景的按钮,然后绑定脚本的Scene1()方法,就可以实现来回切换啦。

错误1:

UnityException: Build path contains project built with "Create Visual Studio Solution" option, which is incompatible with current build settings. Consider building your project into an empty directory.

原因:你当前的目录包含Visual Studio文件目录

解决办法:新建个文件夹专门用来打包这个程序就行

有关unity——通过点击按钮进行场景切换的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  3. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  4. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  5. ruby-on-rails - Ruby on Rails with Haml - 如何从 erb 切换 - 2

    我正在从erb文件切换到HAML。我将hamlgem添加到我的系统中。我创建了app/views/layouts/application.html.haml文件。我应该只删除application.html.erb文件吗?此外,仍然有/public/index.html文件被呈现为默认页面。我想创建自己的默认index.html.haml页面。我应该把它放在哪里以及如何使系统呈现该文件而不是默认索引文件?谢谢! 最佳答案 是的,您可以删除任何已转换为HAML的View的ERB版本。至于你的另一个问题,删除public/index/h

  6. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  7. ruby - 通过 ruby​​ 进程共享变量 - 2

    我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是

  8. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  9. ruby-on-rails - Enumerator.new 如何处理已通过的 block ? - 2

    我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m

  10. ruby - 如何进行排列以有效地定制输出 - 2

    这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][

随机推荐