首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scene2 -如何从scene1传输对象并在Unity中实例化它?

scene2 -如何从scene1传输对象并在Unity中实例化它?
EN

Stack Overflow用户
提问于 2020-06-16 21:45:57
回答 2查看 46关注 0票数 1

我想在Unity中创建一个简单的移动应用,让用户选择一个相框,然后用它做一些事情。

因此,我在scene1中有一个预制件(图片框)的列表。此场景在app-start上显示给用户。

它在我的应用程序中的样例图片:

一旦用户接触到这些帧中的一个,他就会被引用到scene2。这是我的代码,用于确定哪些框架被触摸:FrameSelection.cs附加到FrameList gameObject。

代码语言:javascript
复制
void Update()
    {
        if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
        {
            Touch touch = Input.touches[0];
            Ray ray = Camera.main.ScreenPointToRay(touch.position);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                Debug.Log(hit.transform.name);
                if (frameList.Contains(hit.transform.gameObject))
                {
                    //Switch scene
                }
            }
        }

但是如何将选定的预制件从scene1传递到scene2?我希望预制只实例化在scene2取决于选定的预制在scene1。

在scene2中,我有一个当用户触摸屏幕时实例化对象的脚本:ObjectSpawner.cs

代码语言:javascript
复制
    void Update()
    {
        if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began)
        {
            Touch touch = Input.touches[0];
            Ray ray = Camera.main.ScreenPointToRay(touch.position);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                placedObject = Instantiate(objectToSpawn, hitObject.point,hitObject.transform.rotation);
...

我试图通过在我的FrameSelection.cs脚本中使用DontDestroyOnLoad来避免在场景切换时被破坏,但是当加载scene2时,我仍然得到一个MissingReferenceException

代码语言:javascript
复制
    void Awake() 
    {
        DontDestroyOnLoad(transform.gameObject);
    }

如果有任何帮助,我会很高兴的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-17 04:26:41

另一种选择是使用可脚本化对象。它们是整洁的小数据容器,可以用来存储复杂的对象。此数据独立于场景和类而持久存在。它们不涉及很多额外的代码,也是Unity开发人员需要熟悉的东西,因为它们确实能让你走出一些糟糕的漏洞,当你试图为持久数据编码时,你可能会遇到这些漏洞。

Architect your code with Scriptable Objects

票数 1
EN

Stack Overflow用户

发布于 2020-06-17 01:05:46

我想得太多了,我可以通过实现我附加到frameList上的单例模式来解决它。因此,选定的帧在场景切换过程中保持不变。还是要感谢@whathm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62410024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档