2

これが Unity3d/NGUI の質問に最適なフォーラムかどうかはわかりませんが、試してみてください...

ゲームオブジェクトの親を変更して、スクロール可能なパネルから通常のパネルにゲームオブジェクトを移動しようとしています。

firstGameObject.transform.parent = secondGameObject.transform;

firstGameObject は、最初はクリップされたスクロール可能なパネルの子です。トランスフォームは階層内でうまく移動しているようで、スクロールできなくなりました。ただし、クリップされたパネルの子であったように、まだクリップされています。

何か案は?

編集: NGUI のフォーラムの誰かが、両方の uipanel で Refresh() を呼び出すことを提案しましたが、効果はありませんでした。http://www.tasharen.com/forum/index.php?topic=1941.0

4

3 に答える 3

3

最後にそれが機能しました。親を変更した後、古いパネルの各ウィジェットで CheckParent() を呼び出すのが正しい方法でした。

UIPanel smallPanel = NGUITools.FindInParents<UIPanel>(firstGameObject);
List<UIWidget> list = new List<UIWidget>(smallPanel.widgets.buffer);

foreach (UIWidget widget in list)
{
    if (widget != null)
    {
        widget.CheckParent();
    }
}
于 2012-10-09T12:26:22.060 に答える
0

使用しているスクロールバーによって異なります。新しい親をプレハブに設定すると、新しいローカル座標系のみが設定されます。このスクロールバーのオブジェクトがクリッピングしていると言っています。したがって、プレハブを保存し、プレハブに対していくつかのアクションを実行する、配列またはリストなどのようなものが必要です。または、特定の領域のすべてのオブジェクトを非表示にするある種のマスクがあります(あなたの場合だと思います)。その場合、プレハブをマスクの領域の外に移動する必要があります。画面の位置を変更する必要がない場合は、Z 座標のみを変更すると、プレハブがカメラに近づき、マスク領域から外れます。

于 2012-10-08T13:14:24.667 に答える