我想知道如何访问预制件的值。例如,我在场景中创建了一个ngui进度条,显示的百分比允许进度条的位置。进度条是预制件,我想使用'GetComponent'访问其他脚本中的百分比值。
这是uiroot Strat()方法的脚本:
protected virtual void Start ()
{
// Here - > Showing Null Exception
UILabel uiLabel = GetComponent<UILabel> ();
Debug.Log (uiLabel.text);
// end
UIOrthoCamera oc = GetComponentInChildren<UIOrthoCamera>();
if (oc != null)
{
Debug.LogWarning("UIRoot should not be active at the same time as UIOrthoCamera. Disabling UIOrthoCamera.", oc);
Camera cam = oc.gameObject.GetComponent<Camera>();
oc.enabled = false;
if (cam != null) cam.orthographicSize = 1f;
}
else Update();
}
这是UILabel(预制件)的脚本:
public void SetCurrentPercent ()
{
if (UIProgressBar.current != null)
text = Mathf.RoundToInt(UIProgressBar.current.value * 100f) + "%";
// I want to access this text!!!
Debug.Log (text);
}
两种情况都会发生错误。
Assets/NGUI/Scripts/UI/UIRoot.cs(151,64): error CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected
Assets/NGUI/Scripts/UI/UIRoot.cs(151,52): error CS1502: The best overloaded method match for `UnityEngine.Object.Instantiate(UnityEngine.Object)' has some invalid arguments
Assets/NGUI/Scripts/UI/UIRoot.cs(151,52): error CS1503: Argument `#1' cannot convert `object' expression to type `UnityEngine.Object'
Assets/NGUI/Scripts/UI/UIRoot.cs(153,35): error CS0176: Static member `UILabel.value' cannot be accessed with an instance reference, qualify it with a type name instead
答案 0 :(得分:0)
您可以实例化预制件以从实例中读取值。
您的脚本只需要保留对预制件的引用。
public UILabel prefab; // assign this in the inspector
protected virtual void Start()
{
Debug.Log(prefab.text);
...
}
要指定预制件(使其不为空),请单击场景中的UIRoot脚本,然后将预制件从“项目”选项卡拖动到“检查器”选项卡上的预制插槽。
答案 1 :(得分:0)
很抱歉有迟到的反馈。
我收到了以下错误。
错误CS0029:无法隐式转换类型string' to
UnityEngine.GameObject'
我意识到我必须给父母的孩子打电话。 作为对象的Prefab有孩子,我想得到组件。 总之,我很容易理解。这是一个非常简单的问题。
以下是下面的一段脚本。
<script>
UILabel UILabel = GameObject.Find ("third").GetComponentInChildren<UILabel> ();
print (UILabel.text);