示例#1
0
    static void ToPrefab()
    {
        //确保选择一个Hierarchy视图下的游戏对象
        if (Selection.activeTransform)
        {
            Renderer renderer = Selection.activeTransform.GetComponent <Renderer>();
            //确保有renderer组件
            if (renderer)
            {
                PrefabLightmap prefabLightmap = Selection.activeTransform.GetComponent <PrefabLightmap>();
                if (!prefabLightmap)
                {
                    prefabLightmap = Selection.activeTransform.gameObject.AddComponent <PrefabLightmap>();
                }
                prefabLightmap.lightmapIndex       = renderer.lightmapIndex;
                prefabLightmap.lightmapScaleOffset = renderer.lightmapScaleOffset;

                Object prefab = PrefabUtility.GetPrefabParent(renderer.gameObject); //获取这个物体在project中的源prefab
                                                                                    //如果有Prefab文件就更新,没有就创建新的
                if (prefab)
                {
                    PrefabUtility.ReplacePrefab(Selection.activeTransform.gameObject, prefab, ReplacePrefabOptions.ConnectToPrefab);
                }
                else
                {
                    PrefabUtility.CreatePrefab(string.Format("Assets/Resources/{0}.prefab", Selection.activeTransform.name), Selection.activeTransform.gameObject, ReplacePrefabOptions.ConnectToPrefab);
                }
            }
        }
    }
示例#2
0
    public static void UpdateLightmap(int sceneId)
    {
        string text  = null;
        Scene  scene = DataReader <Scene> .Get(sceneId);

        if (scene == null)
        {
            return;
        }
        if (!string.IsNullOrEmpty(scene.lightmap))
        {
            text = scene.lightmap;
        }
        else
        {
            string[] array = scene.path.Split(new char[]
            {
                '/'
            });
            if (array.Length > 0)
            {
                text = array[array.Length - 1];
            }
        }
        if (string.IsNullOrEmpty(text))
        {
            return;
        }
        string pathOfPrefab = FileSystem.GetPathOfPrefab(text);

        if (string.IsNullOrEmpty(pathOfPrefab))
        {
            return;
        }
        GameObject gameObject = AssetManager.AssetOfNoPool.LoadAssetNowNoAB(pathOfPrefab, typeof(Object)) as GameObject;

        if (gameObject != null)
        {
            PrefabLightmap component = gameObject.GetComponent <PrefabLightmap>();
            if (component == null)
            {
                return;
            }
            LightmapData[] array2 = new LightmapData[component.lightmap_far.get_Count()];
            for (int i = 0; i < array2.Length; i++)
            {
                array2[i] = new LightmapData();
                array2[i].set_lightmapFar(component.lightmap_far.get_Item(i));
            }
            LightmapSettings.set_lightmaps(array2);
            LightmapSettings.set_lightmapsMode(0);
        }
    }