我在使用CocosSharp的基础时遇到了问题 - 使用Xamarin.Forms进行渲染。 拥有版本1.7.1中的CocosSharp和Xamarin 2.3.2.127。 我的CocosSharpView(根据代码或xaml创建)根本不调用ViewCreated事件。更重要的是,直接转换为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),因此渲染根本没有发生......启用一切似乎正常工作。 对于这种混乱感到抱歉,但如果有人遇到类似的问题,这可能会有所帮助。