unity切换场景,物体不销毁

在跳转场景的触发事件中,将背景音乐绑定的对象做成预制体,上面绑定了播放音乐的脚本test1和audioSource组件

test1.cs

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

public class test1 : MonoBehaviour
{
    //public static test1 instance;

    private AudioSource source;

    private void Awake()
    {
        //instance = this;
        source = transform.GetComponent<AudioSource>();
        source.volume = 0.5f;
        source.Play();
    }
   
}

play脚本随便挂载到一个物体身上,通过按钮触发click方法

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

public class play : MonoBehaviour
{
    public GameObject cube;//预制体
    public static bool isHave = false;
    private GameObject clone;
    public void click()
    {
        if(!isHave)
        {
            clone = GameObject.Instantiate(cube);
            clone.transform.position = Vector3.zero;
            isHave = true;
        }
        DontDestroyOnLoad(clone);
        SceneManager.LoadScene(1);
    }
}


这样就可以让场景0的物体出现在场景1里了,如下:
在这里插入图片描述
如果你不想要这个物体,只想要对应的脚本,那你可以把那个脚本写成单例就可以访问了

Unity切换场景时,可以通过两种方法来保持物体的坐标不变: 1. 使用DontDestroyOnLoad方法 可以使用DontDestroyOnLoad方法来保持物体场景切换时不被销毁。这个方法可以在Start()函数中调用,将需要保持不被销毁物体传入即可。 例如,在第一个场景中,可以使用以下代码来保持物体不被销毁: ``` void Start () { // 保持物体不被销毁 DontDestroyOnLoad(gameObject); } ``` 在第二个场景中,可以使用以下代码来获取并移动该物体: ``` void Start () { // 获取第一个场景中的物体 GameObject obj = GameObject.Find("ObjectName"); // 移动物体 obj.transform.position = new Vector3(1, 2, 3); } ``` 2. 使用场景管理器 可以使用场景管理器来加载场景并传递参数。在第一个场景中,可以将需要保持坐标的物体的坐标值存储到一个静态变量中,然后在第二个场景中读取这个静态变量,并将物体的坐标设置为这个值。 例如,在第一个场景中,可以使用以下代码将物体坐标存储到静态变量中: ``` // 定义一个静态变量,用于存储物体坐标 public static Vector3 objectPosition; void Start () { // 获取物体的坐标 objectPosition = transform.position; } // 加载第二个场景 void LoadScene () { SceneManager.LoadScene("SecondScene"); } ``` 在第二个场景中,可以使用以下代码获取并设置该物体的坐标: ``` void Start () { // 获取第一个场景中的物体坐标 Vector3 objectPosition = FirstSceneScript.objectPosition; // 获取物体并设置坐标 GameObject obj = GameObject.Find("ObjectName"); obj.transform.position = objectPosition; } ``` 以上是两种方法来保持物体场景切换时不改变坐标。可以根据需要选择其中一种方法实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值