在Unity中,可以通过Window->Rendering->lighting->在属性面板中选择Environment,修改Skybox Material
为None
来去掉天空盒。
但去掉天空盒的效果是这样的:
这样的效果明显不是预期的效果。
去掉天空盒并不代表背景被透明,还需要设置Camera的背景。
需要设置黑色透明度0,即ARGB为(0,0,0,0)。透明度不为0则无法实现透明效果。
修改透明度后再导入Android中,运行的效果是这样的:
奇怪,明明修改了透明度但没效果。其实设置透明度为0后即可在Android的Surface设置背景透明。
在2021版Unity导出的Android Lib源码中,在UnityPlayer中已经有代码可以进行设置,只不过需要配置isWindowTranslucent
的属性。
private SurfaceView CreateGlView() {
SurfaceView var1;
(var1 = new SurfaceView(this.mContext)).setId(this.mContext.getResources().getIdentifier("unitySurfaceView", "id", this.mContext.getPackageName()));
if (this.IsWindowTranslucent()) {
var1.getHolder().setFormat(-3);
var1.setZOrderOnTop(true);
} else {
var1.getHolder().setFormat(-1);
}
其实在生成的模块中有UnityThemeSelector.Translucent
的主题:
<style name="UnityThemeSelector.Translucent" parent="@style/UnityThemeSelector">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
只需要在AndroidManifest.xml
中改为透明的UnityThemeSelector.Translucent
主题即可。
<activity
...
android:theme="@style/UnityThemeSelector.Translucent">
注意:设置透明的windowBackground
属性将Activity背景设为透明,这样是让应用可以透传看到上一个进程的界面,如果不设置的只能看到3D模型下的UI界面。文章来源:https://www.toymoban.com/news/detail-402132.html
运行后看效果:
可以看到设置透明主题后能看见手机主界面了,达到预期的透明效果。文章来源地址https://www.toymoban.com/news/detail-402132.html
到了这里,关于在Android中Unity3D透明背景的实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!