问题描述: 在开发Android插件时,使用SurfaceTexture在Unity中无法正常工作。
解决方法:
// 在UnityPlayerActivity的onCreate方法中调用setContentView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout); // 替换为你的布局文件
}
// 在获取SurfaceTexture之前,确保已经获取到UnityPlayer的SurfaceTexture对象
SurfaceTexture unitySurfaceTexture = UnityPlayer.currentActivity().mUnityPlayer.getSurfaceTexture();
if (unitySurfaceTexture == null) {
// Unity的SurfaceTexture还未初始化,无法使用
return;
}
SurfaceTexture pluginSurfaceTexture = new SurfaceTexture(textureId);
// 在Unity的GL线程中执行操作
UnityPlayer.currentActivity().mUnityPlayer.queueEvent(new Runnable() {
@Override
public void run() {
// 在GL线程中执行操作
// ...
}
});
注意:以上解决方法是基于Unity 2019及以上版本的开发环境,如果使用的是低版本的Unity,可能需要根据具体情况进行调整。