UrhoSharp Android支持
-
PDF用于离线使用
让我们知道你对此的感受
Android特定设置和功能
虽然Urho是一个便携式类库,并且允许在各种平台上使用相同的API用于您的游戏逻辑,但您仍然需要在平台特定的驱动程序中初始化Urho,在某些情况下,您将希望利用平台具体功能。
在下面的页面中,假设MyGame
是类的一个子 Application
类。
架构
支持的架构:x86,armeabi,armeabi-v7a
创建一个项目
创建一个Android项目,并添加UrhoSharp NuGet包。
将包含您的资产的数据添加到Assets目录,并确保所有文件都具有AndroidAsset作为Build Action。
配置和启动Urho
添加使用Urho
和Urho.Android
命名空间的语句,然后添加用于初始化Urho的代码以及启动应用程序。
在MyGame类中实现的最简单的运行方式是调用
UrhoSurface.RunInActivity<MyGame>();
这将打开一个全屏活动与游戏作为一个内容。
Urho定制嵌入
您也可以让Urho接管整个应用程序屏幕,并将其用作应用程序的组件,您可以创建一个SurfaceView
via:
var surface = UrhoSurface.CreateSurface<MyGame>(activity)
您还需要将一些活动从您的活动转发到UrhoSharp,例如:
protected override void OnPause()
{
UrhoSurface.OnPause();
base.OnPause();
}
:你必须做同样的OnResume
,OnPause
,OnLowMemory
,OnDestroy
, DispatchKeyEvent
和OnWindowFocusChanged
。
这显示了启动游戏的典型活动:
[Activity(Label = "MyUrhoApp", MainLauncher = true,
Icon = "@drawable/icon", Theme = "@android:style/Theme.NoTitleBar.Fullscreen",
ConfigurationChanges = ConfigChanges.KeyboardHidden | ConfigChanges.Orientation,
ScreenOrientation = ScreenOrientation.Portrait)]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
var mLayout = new AbsoluteLayout(this);
var surface = UrhoSurface.CreateSurface<MyUrhoApp>(this);
mLayout.AddView(surface);
SetContentView(mLayout);
}
protected override void OnResume()
{
UrhoSurface.OnResume();
base.OnResume();
}
protected override void OnPause()
{
UrhoSurface.OnPause();
base.OnPause();
}
public override void OnLowMemory()
{
UrhoSurface.OnLowMemory();
base.OnLowMemory();
}
protected override void OnDestroy()
{
UrhoSurface.OnDestroy();
base.OnDestroy();
}
public override bool DispatchKeyEvent(KeyEvent e)
{
if (!UrhoSurface.DispatchKeyEvent(e))
return false;
return base.DispatchKeyEvent(e);
}
public override void OnWindowFocusChanged(bool hasFocus)
{
UrhoSurface.OnWindowFocusChanged(hasFocus);
base.OnWindowFocusChanged(hasFocus);
}
}