标签: unity-components

如何在 Unity 中屏蔽自定义 UI 图形?

在 Unity 2017 中,我通过创建自己的 UI 行为来绘制矢量图形,这些行为从UnityEngine.UI.Graphic. 但是我的代码无关紧要,因为您也可以使用文档中的SimpleImage 示例来观察这个问题。问题是这些从 Graphic 派生的自定义 UI 行为无法被Mask 组件屏蔽,即使每个本机 UI 元素都可以。这很奇怪,因为根据Graphic.OnPopulateMesh文档TextImage、 和RawImage都使用相同的方法。

重现:

  1. 创建一个 UI 画布。
  2. 创建一个名为 Mask 的 UI Image 作为 UI Canvas 的子项。
  3. 将 Mask 组件添加到 Mask 游戏对象。
  4. 添加一个 Image 和一个 SimpleImage 作为 Mask 的子项。
  5. 观察到 Image 被屏蔽,而 SimpleImage 没有。

这对我来说是个问题,因为我需要在滚动视图中使用自定义图形。我该怎么做才能使我的图形与 Unity 的图形一样可屏蔽?

c# graphics mask unity-game-engine unity-components

4
推荐指数
1
解决办法
2719
查看次数

OnGUI仅在第一个组件中调用

我正在创建一个游戏来了解Unity观看教程(这个),我的播放器有两个组件:PlayerHealth和PlayerAttack.两者都运行良好,但问题是当我尝试在第二个组件的OnGUI(PlayerAttack)中做某事时,从不调用PlayerAttack中的OnGUI.

是因为PlayerAttack被添加到PlayerHealth下面?按照下面的代码进行一些打印.

组件订单.

PlayerHealth.cs

using UnityEngine;
using System.Collections;

public class PlayerHealth : MonoBehaviour {
    public int maxHealth = 100;
    public int curHealth = 100;

    public float healthBarLenght;

    // Use this for initialization
    void Start () {
        healthBarLenght = Screen.width / 3;
    }

    // Update is called once per frame
    void Update () {
        AddjustCurrentHealth(0);
    }

    void OnGUI(){
        GUI.Box(new Rect(10, 10, healthBarLenght, 20), curHealth + "/" + maxHealth);
    }

    public void AddjustCurrentHealth(int adj){
        curHealth += adj;

        curHealth = Mathf.Min(Mathf.Max(curHealth, 0), …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine unity-components

2
推荐指数
1
解决办法
319
查看次数

使用嵌套类作为 Unity3D 组​​件

我使用的是 Unity 5.4.2f2 Personal,并且我编写了一个类似于以下内容的 C# 脚本:

using UnityEngine;
using System;

public class Outer : MonoBehaviour {

    // Some public outer fields

    public class Inner : MonoBehaviour {
        // Some public inner fields
    }

}
Run Code Online (Sandbox Code Playgroud)

我希望能够将Outer和附加Inner到场景中的游戏对象。不幸的是,Inner即使我添加了它,它也不会在 Unity Inspector 中显示为可用脚本[Serializable]。我知道很多人可能会说,如果我试图使嵌套类对外界可见,我的设置有问题,但为了这个问题,我只想知道这是否可以做到。即,有什么方法可以使嵌套类用作 Unity 组件吗?

c# inner-classes unity-game-engine unity-components

2
推荐指数
1
解决办法
5700
查看次数

Unity3D.如何以编程方式构造组件

我是团结的新手,并且在架构方面遇到了一些麻烦.

假设我有一个名为'component A'的C#脚本组件.我希望组件A有一个包含"组件B"类型的100个其他组件的数组.如何使用特定值以编程方式构造组件B?

请注意,'组件B'派生自'MonoBehaviour',因为它需要能够调用'StartCoroutine'

我知道在团结中你不像通常在OO那样使用构造函数.

constructor unity-game-engine unity-components

1
推荐指数
1
解决办法
5000
查看次数