Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CS0120无法从不同脚本设置图层掩码_C#_Unity3d_Game Physics_Unity5 - Fatal编程技术网

C# CS0120无法从不同脚本设置图层掩码

C# CS0120无法从不同脚本设置图层掩码,c#,unity3d,game-physics,unity5,C#,Unity3d,Game Physics,Unity5,我正在制作一个游戏,我想通过改变图层蒙版来改变我的玩家可以碰撞的对象,但是每次我尝试在不同的脚本中改变变量时,它都会抛出这个错误 错误CS0120:访问非静态对象需要对象引用 成员“RaycastController.jumpableCollisionMask” 创建变量的位置的代码: using UnityEngine; using System.Collections; [RequireComponent (typeof (BoxCollider2D))] public class Ra

我正在制作一个游戏,我想通过改变图层蒙版来改变我的玩家可以碰撞的对象,但是每次我尝试在不同的脚本中改变变量时,它都会抛出这个错误

错误CS0120:访问非静态对象需要对象引用 成员“RaycastController.jumpableCollisionMask”

创建变量的位置的代码:

 using UnityEngine;
using System.Collections;

[RequireComponent (typeof (BoxCollider2D))]
public class RaycastController : MonoBehaviour {

    public LayerMask collisionMask;

    public LayerMask jumpableCollisionMask;
设置变量的位置的代码

using UnityEngine;
using System.Collections;

public class PlayerChanger : MonoBehaviour {

    public float numberOfPlayersPerLevel;


    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        if (Input.GetKeyDown (KeyCode.E)){
            RaycastController.jumpableCollisionMask = 11;
        }
    }
}
我试过使用setter,但无法使其工作。提前谢谢,祝你有愉快的一天=)

不是


请注意,您可能还有另一个问题:

您可以如下设置层掩码(仅为
int
):

int layerMaskDogs = 1 << LayerMask.NameToLayer("Dogs");
int layerMaskFruits = 1 << LayerMask.NameToLayer("Fruits");
--在INSPECTOR中,使用“RaycastController”并将其拖动到该公共变量中

--现在像这样使用它

public class PlayerChanger : MonoBehaviour {
     public RaycastController myRC;
     ...
     ...
     ...
     //whenever you need to use it...
     myRC.jumpableCollisionMask = 11;

请仔细阅读这本书上的1000页质量保证书!例如,

hi@Paradizigmania希望能有所帮助,不要犹豫,多问一些问题谢谢你的回答。我刚试过,但它返回CS0103:名称“jumpableCollisionMask”在当前上下文中不存在啊-它们在两个不同的脚本中?!?!?!
int layerMaskDogs = 1 << LayerMask.NameToLayer("Dogs");
int layerMaskFruits = 1 << LayerMask.NameToLayer("Fruits");
public class PlayerChanger : MonoBehaviour {
  public RaycastController myRC;
public class PlayerChanger : MonoBehaviour {
     public RaycastController myRC;
     ...
     ...
     ...
     //whenever you need to use it...
     myRC.jumpableCollisionMask = 11;