Пример #1
0
    private void OnSaveSnake()
    {
        PrefabUtility.ReplacePrefab(m_SnakeEditor.gameObject, PrefabUtility.GetPrefabParent(m_SnakeEditor.gameObject), ReplacePrefabOptions.ConnectToPrefab);
        string snakeName = m_SnakeEditor.gameObject.name.Remove(0, SNAKE_EDITOR_PREfAB_NAME_STARTWITHS.Length);

        string            snakePrefabPath = string.Format("{0}{1}{2}.prefab", SNAKE_PREFAB_PATH, slConstants.SNAKE_PROPERTIES_PREfAB_NAME_STARTWITHS, snakeName);
        slSnakeProperties snakeProperties = CreateInstance <slSnakeProperties>();

        snakeProperties.HeadColliderRadius    = m_SnakeEditor.Head.GetComponent <CircleCollider2D>().radius;
        snakeProperties.ClothesColliderRadius = m_SnakeEditor.Clothes.GetComponent <CircleCollider2D>().radius;
        snakeProperties.BodyColliderRadius    = m_SnakeEditor.Body1.GetComponent <CircleCollider2D>().radius;
        snakeProperties.DeadFoodColor         = m_SnakeEditor.DeadFoodColor;
        AssetDatabase.CreateAsset(snakeProperties, snakePrefabPath);

        string     snakePresentationPrefabPath          = string.Format("{0}{1}{2}.prefab", SNAKE_PREFAB_PATH, slConstants.SNAKE_PRESENTATION_PROPERTIES_PREfAB_NAME_STARTWITHS, snakeName);
        GameObject snakePresentationGameObject          = new GameObject(slConstants.SNAKE_PRESENTATION_PROPERTIES_PREfAB_NAME_STARTWITHS + snakeName);
        slSnakePresentationProperties snakePresentation = snakePresentationGameObject.AddComponent <slSnakePresentationProperties>();

        snakePresentation.Head    = InstantiateFromSnakeEditorToSnakePresentation(m_SnakeEditor.Head, snakePresentationGameObject);
        snakePresentation.Clothes = InstantiateFromSnakeEditorToSnakePresentation(m_SnakeEditor.Clothes, snakePresentationGameObject);
        snakePresentation.Body    = InstantiateFromSnakeEditorToSnakePresentation(m_SnakeEditor.Body1, snakePresentationGameObject);
        snakePresentation.BodySpriteMaxOrderInLayer = snakePresentation.Body.GetComponent <SpriteRenderer>().sortingOrder;
        PrefabUtility.CreatePrefab(snakePresentationPrefabPath, snakePresentationGameObject);
        DestroyImmediate(snakePresentationGameObject);
    }
Пример #2
0
        public NodePool(slSnakePresentationProperties presentation, Transform root, hwmQuadtree <slSnake.QuadtreeElement> quadtree)
        {
            m_Presentation = presentation;
            m_Root         = root;
            m_Quadtree     = quadtree;

            Type nodeType = typeof(T);

            m_NodeType = nodeType == typeof(slSnake.HeadNode)
                                ? slConstants.NodeType.Head
                                : nodeType == typeof(slSnake.ClothesNode)
                                        ? slConstants.NodeType.Clothes
                                        : slConstants.NodeType.Body;
        }
Пример #3
0
    public void LoadSnake(string snakeName)
    {
        int index;

        if (!m_SnakeNameToIndex.TryGetValue(snakeName, out index))
        {
            index = m_Propertiess.Count;
            m_SnakeNameToIndex.Add(snakeName, index);

            m_Propertiess.Add(UnityEngine.Object.Instantiate(hwmSystem.GetInstance().GetAssetLoader().LoadAsset(hwmAssetLoader.AssetType.Game
                                                                                                                , slConstants.SNAKE_PROPERTIES_PREfAB_NAME_STARTWITHS + snakeName)) as slSnakeProperties);

            slSnakePresentationProperties snakePresentationProperties = slWorld.GetInstance().NeedPresentation()
                                ? UnityEngine.Object.Instantiate(hwmSystem.GetInstance().GetAssetLoader()
                                                                 .LoadAsset(hwmAssetLoader.AssetType.Game, slConstants.SNAKE_PRESENTATION_PROPERTIES_PREfAB_NAME_STARTWITHS + snakeName) as GameObject)
                                                                        .GetComponent <slSnakePresentationProperties>()
                                : null;
            snakePresentationProperties.transform.SetParent(m_PoolRoot, false);
            snakePresentationProperties.gameObject.SetActive(false);

            NodePool <slSnake.HeadNode> headNodePool = new NodePool <slSnake.HeadNode>(snakePresentationProperties, m_PoolRoot, m_Quadtree);
            headNodePool.Initialize(1);
            m_HeadPools.Add(headNodePool);

            NodePool <slSnake.ClothesNode> clothesNodePool = new NodePool <slSnake.ClothesNode>(snakePresentationProperties, m_PoolRoot, m_Quadtree);
            clothesNodePool.Initialize(1);
            m_ClothesNodePools.Add(clothesNodePool);

            NodePool <slSnake.BodyNode> bodyNodePool = new NodePool <slSnake.BodyNode>(snakePresentationProperties, m_PoolRoot, m_Quadtree);
            bodyNodePool.Initialize(slConstants.SNAKE_POOL_BODYNODE_CACHECOUNT_PRESNAKE);
            m_BodyPools.Add(bodyNodePool);
        }
        else
        {
            m_HeadPools[index].Create(1);
            m_ClothesNodePools[index].Create(1);
            m_BodyPools[index].Create(slConstants.SNAKE_POOL_BODYNODE_CACHECOUNT_PRESNAKE);
        }
    }