繁体   English   中英

我将一些数据传输到带有ScriptableObject的脚本中,但它卡在一个变量中

[英]I transfer some data to a script with a ScriptableObject but it's stuck at one variable

我制作了一些UI Image游戏对象,以通过ScriptableObjects显示图片。 当单击其中一个时,我希望它将其数据传输到另一个脚本的静态变量。

假设我在“ MyTeamProfile”上有这个:

public static string teamname; 

在我的“ LogoDisplayer”上,我有这个(scr_CreateTeams是一个ScriptableObject):

public scr_CreateTeams thisTeam;
void Update() {
    if (Input.GetButtonDown("Fire1")) {
         MyTeamProfile.teamname = thisTeam.teamname;
    }
}

我目前有三个带徽标的团队和一个与团队的ScriptableObjects相连的LogoDisplayer,当我单击任何徽标时,我只能让一个团队回来。 当我点击团队A时,如果我得到了团队A; 当我单击团队B或团队C时,我也得到了团队A。所有LogoDisplayer脚本仅作用于一个ScriptableObject。 当我从场景中删除团队A时,变量将返回为团队B或团队C,但存在相同的错误。

静态变量在类的所有实例之间共享。 它的作用域不是类的实例,而是所有类的作用域。

如果希望每个“ MyTeamProfile”具有不同的“ teamname”值,则需要直接引用保存该信息的scriptableObject,以及包含该字符串的非静态变量。 这与您当前对静态值的通用类引用不同。

不幸的是,您没有提供足够的代码来提供一个很好的示例,因为我无法确定您的单行为和可编写脚本的对象类是基于提供的内容。

如果场景中有多个“ LogoDisplayer”脚本,则问题在于它们都是相同的。 换句话说,您有多个脚本同时在相同条件下执行相同的操作。 在您的情况下按“ Fire1”时,所有运行MyTeamProfile.teamname = thisTeam.teamname;的“ LogoDisplayer”脚本MyTeamProfile.teamname = thisTeam.teamname; 以下代码可能有助于了解首先需要更改的内容。 试试吧:

public KeyCode keyCode; //Select DIFFERENT KeyCodes for each team in the Inspector
                        //For example, Team A = KeyCode.A, Team B = KeyCode.B, etc
    public scr_CreateTeams thisTeam;

    void Update()
    {
        if (Input.GetButtonDown(keyCode))
        {
            MyTeamProfile.teamname = thisTeam.teamname;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM