AlayaElla

主要写写游戏制作方面的文章

Unity3D预制件(Prefab)使用方法总结

前言

在unity中经常会用到预制件这个东西,因为预制件可以保存我们在unity场景中编辑的任何东西。
然后这个保存的预制件可以用在其他场景。
因此我们可以把预制件理解成通用模块
在我们的项目里面粒子UI通用的动画效果NPC骨骼动画都是使用的预制件。
这样帮助我们在项目中剩下很多重复劳动的时间。

那么下面看看预制件吧。。



预制件基础说明:

预制件长什么样子:

下面这个图就是预制件。。

嗯,就是一个蓝色的方块,只要在unity项目中看蓝色方块,不管里面是什么那就是预制件。

预制件是怎么制作的:

其实制作预制件很简单。把我们感觉可以通用的东西直接用鼠标拖到unity字资源窗口中就会创建一个预制件。
比如下图创建了一个气泡UI的预制件。

这个预制件包含了UI的动画效果,UI的布局,所有的参数统统记录在了预制件中。
同时创建好的预制件,在unity的Hierarchy窗口中看见会是蓝色的。

预制件的使用:

把unity的资源窗口中预制件拖到我们想使用场景中即可。


比如下图使用了上面创建气泡UI的预制件。
可以看到和在之前场景中摆的效果一模一样。

预制件的编辑操作:

保存更改的预制件:
保存后的预制件我们可能在之后会遇到需要添加或者修改预制件中保存的东西。
预制件修改后不能像保存场景一样Ctrl+S,而是需要在预制件的面板中点击Apply
这样才能保存编辑后的效果。


重置预制件:
在预制件的面板中点击Revert。可以把预制件重置会编辑之前的样子。

效果:


快速定位到预制件的资源文件:
在预制件的面板中点击Select,可以快速在资源窗口中定位到预制件的路径。

效果:


断开预制件的关联:
预制件是通用的模块,所以我们一个场景修改了预制件,在其他使用同样预制件的场景也会跟着改变。
有时可能我们不希望别的场景也跟着发生变化,那么就需要断开预制件的关联。
断开预制件关联的操作如下:
* 选择想断开关联的预制件
* 点击GameObject菜单栏,选择Break Prefab Instance

这样修改其他场景的预制件时,就不会影响到它了,取消关联的预制件会重新变为白色。
说明它已经不是预制件(通用模块)了。

批量保存更改的预制件
这个不是unity自带的功能,而是川川兄大佬写的一个小插件。
可以快速的批量保存修改的预制件。
(因为做粒子的预制件时,可能会批量修改批量保存。这个时候如果一个一个点真的要死。。)

下面贴出代码,这个代码需要放置在unity的Edior文件中。
有需要的同学可以让程序修改下使用在自己的项目中。

    [MenuItem("CandyTool/Batch Apply Prefabs")]
    public static void SavePrefabs()
    {
#if UNITY_EDITOR
        var goList = Selection.gameObjects;
        foreach (var go in goList)
        {
            var prefabsRoot = PrefabUtility.FindPrefabRoot(go);
            PrefabUtility.ReplacePrefab(prefabsRoot, PrefabUtility.GetPrefabParent(prefabsRoot));
            Debug.Log("current save prefabs:" + prefabsRoot.name);
        }
#endif

    }

使用方法:
* 选中要更改的多个预制件。
* 点击CandyTool菜单栏,选择Batch Apply Prefabs
* 等待保存结束。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注