我在使用 CocosSharp 的基础时遇到问题 - 使用 Xamarin.Forms 进行渲染。在版本 1.7.1 和 Xamarin 2.3.2.127 中有 CocosSharp。根本不为我的 CocosSharpView 调用 ViewCreated 事件(从代码或 xaml 创建)。更重要的是,直接转换为 CCGameView 会引发编译错误:
Error CS0039: Cannot convert type 'CocosSharp.CocosSharpView' to 'CocosSharp.CCGameView' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
此外,我将直接元素转换替换为 CocosSharpView ViewCreated事件中的转换:
private void HandleViewCreated(object sender, EventArgs e)
{
var gameView = sender as CCGameView;
if (gameView == null) return;
(...)
}
但是,该事件永远不会被调用,视图永远不会被渲染。我的xaml文件如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:cf="clr-namespace:CocosSharp;assembly=CocosSharp.Forms"
x:Class="LocationTeacher.MainPage">
<Grid x:Name="MainGrid">
<Grid.RowDefinitions>
<RowDefinition Height="1*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<cf:CocosSharpView x:Name="CocosView"
Grid.Row="0"
ResolutionPolicy="ShowAll"
HorizontalOptions="FillAndExpand"
VerticalOptions="FillAndExpand"
BackgroundColor="Transparent" />
<StackLayout Grid.Row="1">
<Button Text="Move Circle Left" />
<Button Text="Move Circle Right" />
</StackLayout>
</Grid>
</ContentPage>
和我背后的代码:
public partial class MainPage : ContentPage
{
private GameScene gameScene;
public MainPage()
{
InitializeComponent();
CocosView.ViewCreated += HandleViewCreated;
}
private void HandleViewCreated(object sender, EventArgs e)
{
var gameView = sender as CCGameView;
if (gameView == null) return;
(...)
}
}
有人遇到过同样的问题吗?(并设法解决它,如果是这样 - 那么如何解决?)
编辑:解决方案确实非常简单......这样说很愚蠢,但显然我没有在我的模拟器中启用硬件加速(使用主机GPU),渲染根本没有发生......启用后一切似乎正常工作。很抱歉造成混淆,但是如果有人遇到类似问题,它可能会有所帮助。