无法访问附加到UI图像的脚本

时间:2016-06-14 21:29:30

标签: c# unity3d

我遇到的问题是,我无法从另一个脚本访问我自己的脚本,我附加到我的图像对象。

我可以访问创建图像对象时出现的图像(脚本)但是全部。

错误:对象引用未设置为对象的实例。

我的GameManager脚本是试图访问我的自定义图像脚本的脚本,其方法如下:

import requests
from requests.utils import quote

session = requests.Session()
session.cookies.get_dict()
url = 'https://my.url.com'
authentication = {"username":"name","password":"pswd","domain":"domain_id","rURL":"https://another.url.com/something"}
reqs = requests.post(url)
response = session.get(reqs.url)
new_req = requests.post(url, data = authentication)
print new_req.text

我附加到我的图像对象的脚本是:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class scriptGameManager : MonoBehaviour {

    public Image img1;

private int gmValue = 0;

    void Update () {
        gmValue = img1.GetComponent<MyImageScript>().GetValue();
    }
}

enter image description here

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

我可以访问创建图像时出现的图像(脚本)   对象,但那是

如果我是正确的,您正尝试从MyImageScript脚本访问scriptGameManager并且MyImageScript附加到相同的GameObject img1(图片)附加to。但是根据你评论中的图片,你没有附加到图像的MyImageScript脚本。

附加到您的Image的唯一脚本是ScriptCharSpot脚本。

enter image description here

您必须在编辑器或直通代码中将MyImageScript附加到您的图片,然后才能使用GetComponent,否则它将返回null。同时,您需要缓存MyImageScript脚本,而不是每帧调用GetComponent

public class scriptGameManager : MonoBehaviour {

    public Image img1;
    MyImageScript imgScript;

    private int gmValue = 0;

    void Start () {
        //Add MyImageScript to img1 
        img1.gameObject.AddComponent<MyImageScript>();
        //Get/Cache MyImageScript that is attached to img1 
        imgScript = img1.GetComponent<MyImageScript>();
    }

    void Update () {
        gmValue = imgScript.GetValue();
    }
}