Exemplo n.º 1
0
    public void ComponentDeserialize(Component o, BinaryNode node)
    {
        Animation animation = o as Animation;

        for (int i = 0; i < node.GetChildNum(); i++)
        {
            BinaryNode child = node.GetChild(i);
            if (!(child.GetName() != "AniName"))
            {
                string        nodeAttr      = GameSerializer.GetNodeAttr(child, "Value");
                AnimationClip animationClip = (AnimationClip)GameSerializer.GetResource(nodeAttr, typeof(AnimationClip));
                if (null == animationClip)
                {
                    Debug.LogError("Cannot find Animation: " + nodeAttr);
                    return;
                }
                if (nodeAttr != null && nodeAttr.get_Length() != 0)
                {
                    animation.AddClip(animationClip, animationClip.name);
                }
            }
        }
    }
    private static GameObject LoadRecursionOnce(GameObject parentGo, BinaryNode domNode)
    {
        GameObject gameObject = null;
        string     nodeAttr   = GameSerializer.GetNodeAttr(domNode, "ON");

        if (parentGo != null)
        {
            for (int i = 0; i < parentGo.transform.childCount; i++)
            {
                if (parentGo.transform.GetChild(i).name.Equals(nodeAttr))
                {
                    gameObject = parentGo.transform.GetChild(i).gameObject;
                    break;
                }
            }
        }
        if (gameObject == null)
        {
            string nodeAttr2 = GameSerializer.GetNodeAttr(domNode, "PFB");
            if (nodeAttr2 != null && nodeAttr2.get_Length() != 0)
            {
                object resource = GameSerializer.GetResource(nodeAttr2, typeof(GameObject));
                if (resource == null || !(resource is GameObject))
                {
                    Debug.LogError(nodeAttr2 + " 不存在或者类型错误,请重新导出该场景");
                    gameObject = new GameObject();
                }
                else
                {
                    GameObject gameObject2 = resource as GameObject;
                    bool       activeSelf  = gameObject2.activeSelf;
                    gameObject2.SetActive(false);
                    gameObject = (GameObject)Object.Instantiate(gameObject2);
                    gameObject2.SetActive(activeSelf);
                }
            }
            else
            {
                gameObject = new GameObject();
            }
        }
        Vector3 localScale = gameObject.transform.localScale;

        gameObject.name = GameSerializer.GetNodeAttr(domNode, "ON");
        if (parentGo != null)
        {
            gameObject.transform.parent = parentGo.transform;
        }
        gameObject.transform.localScale = localScale;
        GameSerializer.DeserializeObject(domNode, gameObject);
        gameObject.SetActive(false);
        GameSerializer.InitComponets(domNode, gameObject);
        for (int j = 0; j < domNode.GetChildNum(); j++)
        {
            BinaryNode child = domNode.GetChild(j);
            if (child.GetName() == "CHD")
            {
                GameSerializer.LoadRecursionOnce(gameObject, child);
            }
        }
        return(gameObject);
    }