大佬求解,遇到了从一个主场景创建多个门通往对应的分场景的问题
unity3d吧
全部回复
仅看楼主
level 5
毒豪豪 楼主
想实现这个功能已经琢磨了五六天了,尝试了很多渠道都无法解决。我是想通过在场景中放置的三个房子各自对应门互动来实现切换到室内场景的功能,但是发现不管是用统一的在检查器修改变量名的代码,还是每个门都添加上专属的跳转到对应场景的代码,在运行时,三个门都只能跳转到同一个场景。多次修改代码都没能解决这个问题,每次跳转的场景都是第一个添加了跳转代码的场景,就给人一种强制线性切换场景的感觉。也就在我把预制体门的模型复制一份拿来用的时候,短暂的变成了三个门能跳转到两个对应场景,之后再次运行又回复原状。
2023年05月26日 12点05分 1
level 5
毒豪豪 楼主
下面是我的统一切换场景的代码:
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class 触发场景转移 : MonoBehaviour
{
public string sceneName; //要转移到的场景的名称
public Text promptText; //提示文本
private bool isTriggered = false; //是否触发门
void Start()
{
promptText.enabled = false; //隐藏提示文本
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Player"))
{
promptText.enabled = true; //显示提示文本
}
}
void OnTriggerExit(Collider other)
{
if (other.gameObject.CompareTag("Player"))
{
promptText.enabled = false; //隐藏提示文本
}
}
private void Update()
{
if (promptText.enabled && Input.GetKeyDown(KeyCode.E) && !isTriggered)
{
string sceneToLoad = null;
switch (gameObject.name)
{
case "Door1":
sceneToLoad = "菠萝屋客厅";
break;
case "Door2":
sceneToLoad = "章鱼哥家";
break;
case "Door3":
sceneToLoad = "派大星家";
break;
}
if (sceneToLoad != null)
{
SceneManager.LoadScene(sceneToLoad);
}
}
}
}
2023年05月26日 12点05分 2
level 5
建议你在SceneManager.LoadScene(sceneToLoad)这一行前面加个断点,运行到这里的时候看看sceneToLoad是不是你期待的值
2023年05月26日 12点05分 3
我看过控制台,显示的是先是会跳到指定的场景,然后又跳到默认的第一个添加了脚本的场景
2023年05月26日 13点05分
@毒豪豪 照理说你跳到了另外一个场景,那么原来场景的所有代码都会失效,不可能会继续跳转。你先跳到一个静态无任何代码的场景试试。此外,可以在SceneManager.LoadScene(sceneToLoad)上面加上print("sceneToLoad");首先观察结果是什么,其次看看该结果出现了多少次
2023年05月26日 14点05分
@vainquit 打错,是print(sceneToLoad)
2023年05月26日 14点05分
@vainquit 我试了试,三个房间的场景全都打印出来了
2023年05月26日 15点05分
level 6
触发太快了?换场景后又换回去了对吧?
2023年05月26日 14点05分 4
感觉是切换场景有个默认的跳转场景,我是总共四个场景,一个主场景,三个分场景,不管通过哪个门出发,都是跳到同一个分场景里🤔
2023年05月26日 15点05分
@毒豪豪 跳到哪个里?你给这几个场景序号看看。
2023年05月26日 15点05分
@现在不想吃饭 先是跳到派大星家,然后是菠萝屋客厅,最后是章鱼哥家,最后那个就是每次感官上直接切换到的场景
2023年05月26日 15点05分
@毒豪豪 如果没有别的脚本影响,可能是多次触发了,切换场景前一条语句用代码暂停2s看看。
2023年05月26日 15点05分
level 1
你的切换场景功能为啥写在update里面呢 不应该写在碰撞检测里面吗
2023年05月30日 08点05分 5
我这个的碰撞器是要有提示文本的功能的
2023年05月30日 09点05分
那你想怎么跳转呢,我看了一下是文字显示然后碰撞到了 按E是吧。那你switch判断的gameobject.name是谁的呢
2023年05月30日 09点05分
@SmoggyBattle 那是判断模型门的名字,其实这个问题楼上已经有人给解答了
2023年05月30日 09点05分
@毒豪豪 ttp://tb2.bdstatic.com/tb/editor/images/face/i_f02.png?t=20140803" >你挂了三个脚本啊 回复 #(reply,tb.1.8b804ca.T-_v1jkbBPICkZFXHlw0bA,佛系毒鸭) :
2023年05月30日 09点05分
1