WaveVR FadeOut Effect¶
Introduction¶
This tutorial shows you how to use the fade-out effect in Unity. See the example below.
Example¶
First, create a new Java file with following content:
import com.htc.vr.sdk.VRActivity;
import com.htc.vr.unity.WVRUnityVRActivity;
class Sample_FadeOut{
private static Sample_FadeOut mInstance = null;
private WVRUnityVRActivity mActivity;
private Context mContext;
private Handler mHandler;
FadeOutStartActivity mFadeOutRunnable;
public Sample_FadeOut(WVRUnityVRActivity activity) {
mActivity = activity;
mContext = (Context)activity;
//Cause this effect need executed in the main thread
mHandler = new Handler(mContext.getMainLooper());
}
public static Sample_FadeOut getInstance(WVRUnityVRActivity activity){
if (mInstance == null) {
mInstance = new Sample_FadeOut(activity);
}
return mInstance;
}
public void FadeOut(){
this.mFadeOutRunnable = new FadeOutStartActivity();
this.mHandler.postDelayed(this.mFadeOutRunnable, 1)
}
private class FadeOutStartActivity implements Runnable{
public FadeOutStartActivity() {}
public void run(){
Runnable runnable = new Runnable(){
public void run(){
Intent permIntent = new Intent("android.intent.action.MAIN");
permIntent.addCategory("android.intent.category.HOME");
permIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
permIntent.putExtra("QuickMenuEvent", 1);
mActivity.startActivity(permIntent);
}
};
mActivity.doVRStartActivity(runnable);
}
}
}
In VIVE Wave™ SDK the above Java file is already included in wvr_client.aar and wvr_unity_plugin_2017.aar under plugin/Assets/WaveVR/Platform/Android. So that you can use it directly.
Then you can use the fade-out effect by C# script as following:
private const string FADEOUT_CLASSNAME = "com.htc.vr.sample.Sample_FadeOut";
void Start () {
using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity")){
AndroidJavaClass ajc_setting = new AndroidJavaClass(FADEOUT_CLASSNAME);
//Cause this effect need executed in the main thread, sending currentActivity to fadeout_class
fadeout_class = ajc_setting.CallStatic<AndroidJavaObject>("getInstance", jo);
fadeout_class.Call("FadeOut");
}
}
}