C# CS0120无法从不同脚本设置图层掩码
我正在制作一个游戏,我想通过改变图层蒙版来改变我的玩家可以碰撞的对象,但是每次我尝试在不同的脚本中改变变量时,它都会抛出这个错误 错误CS0120:访问非静态对象需要对象引用 成员“RaycastController.jumpableCollisionMask” 创建变量的位置的代码: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
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;