需求
项目有两个服务器,一个为线上的正式服务器,另一个为本地的测试服务器(用于发版之前测试使用),为了避免以测试服务器的状态上线,需要在打包时判断是不是测试服务器,如果是测试服务器则弹出提示框,问询是否继续。
解决方案
[DidReloadScripts]标签可以再代码编译完成时Unity进行自动调用,解决思路为在代码编译完成时注册打包事件,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEngine;
public class BuildSetting
{
[DidReloadScripts]
static void OnScriptsEditOver()//代码编译完成时调用
{
//注册打包发布的事件;unity在打包发布的时候会判断buildPlayerHandler 是不是为null,为空就执行默认打包方法,不为空就执行注册的事件
BuildPlayerWindow.RegisterBuildPlayerHandler(OverrideBuildPlayer);
}
static void OverrideBuildPlayer(BuildPlayerOptions BPOption)
{
if (WebCtrl.isTest)//测试服务器状态
{
if (EditorUtility.DisplayDialog("提示:", "\n确定要以测试服务器的形式打包?", "是", "否"))
{
BuildPlayerWindow.DefaultBuildMethods.BuildPlayer(BPOption);//调用unity默认的打包方法。取消打包,不用写其他代码
}
}
else
{
BuildPlayerWindow.DefaultBuildMethods.BuildPlayer(BPOption);//调用unity默认的打包方法。取消打包,不用写其他代码
}
}
}