[unity-FPS]传送门实现(玩家跨场景传送)(完整代码可直接使用)

这里附上我的完整代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class ProtalDoor : MonoBehaviour
{
    public string targetSceneName; // 目标场景的名称
    public Vector3 targetPosition; // 目标位置

    private void Awake()
    {
        string currentSceneName = SceneManager.GetActiveScene().name;//获取当前场景的名字
        if (currentSceneName=="Level1")
        {
            targetSceneName = "Level2";
            targetPosition = new Vector3(24,0.84f,-0.3f);
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player")) // 确保只有玩家触发传送门
        {
            // 保存玩家当前的位置和状态(如果需要)
            // 例如:PlayerPrefs.SetFloat("PlayerX", transform.position.x);
            // PlayerPrefs.SetFloat("PlayerY", transform.position.y);
            // PlayerPrefs.SetFloat("PlayerZ", transform.position.z);
            PlayerPrefs.SetFloat("PlayerX", transform.position.x);
            PlayerPrefs.SetFloat("PlayerY", transform.position.y);
            PlayerPrefs.SetFloat("PlayerZ", transform.position.z);
            // 异步加载目标场景
            StartCoroutine(LoadTargetScene());
        }
    }

    private IEnumerator LoadTargetScene()
    {
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(targetSceneName, LoadSceneMode.Single);

        // 等待场景加载完成
        while (!asyncOperation.isDone)
        {
            yield return null;
        }

        // 在目标场景中找到玩家对象并设置其位置
        GameObject player = GameObject.FindGameObjectWithTag("Player");
        if (player != null)
        {
            player.transform.position = targetPosition;
        }
    }

}

有几个需要注意的是:

这种方法必须要提前将场景添加到Build Settings(生成设置)中,具体添加步骤如下:

  1. 在Unity编辑器中,点击菜单栏的File > Build Settings...(生成设置)
  2. 在弹出的Build Settings窗口中,确保你位于Scenes In Build(Build中的场景)选项卡
  3. 点击Add Open Scenes按钮,这将把当前打开的场景添加到构建列表中这里会添加你当前已经打开的场景,我已经添加了Level1和Level2。
  4. 确保Level2场景已经被正确添加后,关闭Build Settings窗口。
  5. 重新运行游戏或场景切换,现在应该能够成功加载"Level2"场景了。

 下面是测试:

这里是我的Level1的传送门,现在我们进去

然后我们就到了Level2了

连着场景名也变了

 这时当我们退出运行又回到了Level1的场景界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值