统一公共游戏对象 CS0117.

本文关键字:对象 CS0117 游戏 | 更新日期: 2024-11-07 00:49:47

这是我的脚本

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
    public class MouseDownText : MonoBehaviour {
        public Canvas myCanvas;
        // Use this for initialization
        void Start () {
            myCanvas.enabled = false;
        }
        // Update is called once per frame
        void Update () {
        }
        void OnMouseDown()
        {
            // for switch on/off
            if (myCanvas.enabled)
                myCanvas.enabled = false;
            else

    myCanvas.enabled = true;
}
} 

当我改变时。 公共画布到公共游戏对象

public GameObject myObject;
    // Use this for initialization
    void Start () {
        myObject.enabled = false;
    }

在 myObject.enabled 中是红色文本并说"错误 CS0131:赋值的左侧必须是变量、属性或索引器"

为什么?

更新问题-------

最热门的问题是如何改变

public Canvas myCanvas;

public GameObject myCanvas;

myCanvas.enabled = false;

肯定错误。 因为游戏对象不需要 已启用

但这是我真正的剧本

using UnityEngine;
using System.Collections.Generic;
using Vuforia;
public class VirtualButtonEventHandler : MonoBehaviour, IVirtualButtonEventHandler {
    // Private fields to store the models
    public Canvas model_1;
    void Start() {
        // Search for all Children from this ImageTarget with type VirtualButtonBehaviour
        VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour> ();
        for (int i = 0; i < vbs.Length; ++i) {
            // Register with the virtual buttons TrackableBehaviour
            vbs [i].RegisterEventHandler (this);
        }

        model_1.enabled=false;
    }
        public void OnButtonPressed(VirtualButtonAbstractBehaviour vb) {
            //Debug.Log(vb.VirtualButtonName);
            Debug.Log("Button pressed!");
            switch(vb.VirtualButtonName) {
            case "btnLeft":
            if (model_1.enabled)
                model_1.enabled = false;
            else
                model_1.enabled = true;
                break;
                //  default:
                //  throw new UnityException("Button not supported: " + vb.VirtualButtonName);
                //  break;
            }
        }
        /// Called when the virtual button has just been released:
        public void OnButtonReleased(VirtualButtonAbstractBehaviour vb) {
            Debug.Log("Button released!");
        }
    }

它在以下情况下工作

public Canvas Model_1;

启用。

但是当我想将画布更改为游戏对象时如何?

我必须在这里更改什么

public GameObject Model_1;

model_1.enabled=false;

switch(vb.VirtualButtonName) {
                case "btnLeft":
                if (model_1.enabled)
                    model_1.enabled = false;
                else
                    model_1.enabled = true;

因为我的模型不仅仅是 1所以我可以像逻辑一样更改我的对象,如果if(model_1 false)model_1 上再次单击BtnLeft。(如果model_1打开)model_1假model_2 上像下一个对象

统一公共游戏对象 CS0117.

这不是一个难题。因为游戏对象没有启用的属性。

您需要做的是将代码更改为:

myCanvas.SetActive(false);

我对学习unity3d的建议是阅读更多文档并观看更多教程。Evem 非常基本的。

附言

Google is a better teacher than SO.

如果你想让开关工作,看来你的逻辑是对的。您只需要将代码添加到 Update .

void Update(){
    if(Input.GetMouseDown(0)){
        OnMouseDown();
    }
}
我知道

这有点晚了,但我想如果你仍然有问题,你可能仍然需要帮助。首先,您不能使用 .enabled 禁用游戏对象,因为.enabled仅适用于组件,不适用于游戏对象。要禁用游戏对象,您需要使用 SetActive。所以你会做:

myObject.SetActive(false);

现在回答您对蒂姆帖子的评论。您目前有这个;

if (myCanvase.enabled)
{
    myCanvas.enabled = false;
}
else
{
    myCanvas.enabled = true;
}

您必须使用 activeSelf 。如果游戏对象处于活动状态,这将返回true。所以把它改成这样:

if (myCanvas.activeSelf)
{
    myCanvas.SetActive(false);
}
else
{
    myCanvas.SetAcive(true);
}