fairygui的特殊问题SetNativeObject:_fairygui DisplayObject is still in use but GameObject was disposed.
SetNativeObject使用背景
当使用unity+fairygui时,用到了SetNativeObject.
将一个unity-spine动画挂载在fairygui的图形节点上
SetNativeObject问题发现:
我尝试将物体Fairygui-Dispose销毁时,多次执行(10次以上),报错了…
_fairygui DisplayObject is still in use but GameObject was disposed.)
我仔细看了官方的说明:
unity3d-fairygui
问题解决
官方的建议是一开始直接初始化好这个Wrapper,然后自己维护需要wrapTarget的GameObject…
然后不使用dispose回收该对象…
using System;
using FairyGUI;
using UnityEngine;
namespace DefaultNamespace
{
public class Test : MonoBehaviour
{
private GoWrapper wrapper = null;
private GameObject go = null;
private GGraph gg = GRoot.inst.GetChild("GGraph").asGraph;
/// <summary>
/// 加载prefab
/// </summary>
private void LoadPrefab()
{
go = GameObject.Instantiate(Resources.Load("Assets/X.prefab") as GameObject);
if (wrapper == null)
{
wrapper = new GoWrapper(go);
}
else
{
wrapper.wrapTarget = go;
}
gg.SetNativeObject(wrapper);
}
/// <summary>
/// 替换prefab
/// </summary>
/// <param name="replaceGo"></param>
private void ReplaceWrapTarget(GameObject replaceGo)
{
if (wrapper != null)
{
if (wrapper.wrapTarget != null)
{
Destroy(wrapper.wrapTarget);
}
wrapper.wrapTarget = replaceGo;
}
}
}
}