Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin 如何在UrhoSharp中绘制圆或线_Xamarin_Urhosharp - Fatal编程技术网

Xamarin 如何在UrhoSharp中绘制圆或线

Xamarin 如何在UrhoSharp中绘制圆或线,xamarin,urhosharp,Xamarin,Urhosharp,我正在使用xamarim的urhosharp游戏引擎开发一款跨平台游戏。。。。这确实是一个不错的选择,与WPF兼容,但我不知道如何绘制形状,我查阅了指南和文档,没有找到一种方法来绘制圆、圆形、环形或任何任何人知道或可以帮助我的几何类型。我将非常感激 提前感谢 我尝试了这段代码,但屏幕上没有出现圆圈: DebugRenderer debug = new DebugRenderer(); debug.AddCircle(new Vector3(50,50,0),new Vector3(100,25,

我正在使用xamarim的urhosharp游戏引擎开发一款跨平台游戏。。。。这确实是一个不错的选择,与WPF兼容,但我不知道如何绘制形状,我查阅了指南和文档,没有找到一种方法来绘制圆、圆形、环形或任何任何人知道或可以帮助我的几何类型。我将非常感激

提前感谢

我尝试了这段代码,但屏幕上没有出现圆圈:

DebugRenderer debug = new DebugRenderer();
debug.AddCircle(new Vector3(50,50,0),new Vector3(100,25,0),50,Color.Magenta,2 ,true  );

       for (int i = 0; i < 512; ++i)
                {
                    var start = new Vector3(i, 0, 0);
                    var end = new Vector3(i, 100, 0);

                    debug.AddLine(start, end, Color.White, false);
                    debug.AddCircle(start, end, 50f, Color.Red, i, false);
                }

    scene.AddComponent(debug);
DebugRenderer debug=new DebugRenderer();
AddCircle(新矢量3(50,50,0),新矢量3(100,25,0),50,彩色,品红色,2,真);
对于(int i=0;i<512;++i)
{
var start=新向量3(i,0,0);
var端=新向量3(i,100,0);
AddLine(开始、结束、颜色、白色、假);
AddCircle(开始、结束、50f、颜色、红色、i、false);
}
添加组件(调试);

请注意,DebugRenderRender用于调试目的。如果要使DebugRenderer正常工作,需要订阅PostRenderUpdate,如下所示:

Engine.SubscribeToPostRenderUpdate(args => YourMethodHandler);
var dr = app.Scene.GetOrCreateComponent<DebugRenderer>();
app.Engine.PostRenderUpdate += (arg4) => {
    app.Renderer.DrawDebugGeometry(false);
};
app.Renderer.BeginViewRender += (arg5) => {
    dr.AddBoundingBox(new BoundingBox(-1000, 1000), Color.Blue);
    dr.LineAntiAlias = true;
    dr.AddTriangle(new Vector3(2,0,0), new Vector3(2,1,0), new Vector3(2,0,1), Color.Magenta, false);
    dr.AddCircle(new Vector3(2,0,0), new Vector3(1,1,1), 5.0f, Color.Red);
};
通常,您会在设置中执行此操作。然后你的MethodHandler就像:

protected void YourMethodHandler()
{
    // this requires that you have already added a DebugRenderer
    // component in your scene object
    var debugRenderer = scene.GetComponent<DebugRenderer>();

    if (debugRenderer != null)
    {
        // do your drawing code here
        // to draw a rectangle for example:

        var upperBound = new Vector3(-4.0f, 2.0f, 0.0f);
        var lowerBound = new Vector3(4.0f, -2.0f, 0.0f);
        debugRenderer.AddBoundingBox(
            new BoundingBox(upperBound, lowerBound), 
            Color.White, 
            false);
    }
}
protected void YourMethodHandler()
{
//这要求您已经添加了DebugRenderer
//场景对象中的组件
var debugRenderer=scene.GetComponent();
if(debugRenderer!=null)
{
//请在这里输入您的绘图代码
//例如,要绘制矩形,请执行以下操作:
var上限=新矢量3(-4.0f,2.0f,0.0f);
var lowerBound=新矢量3(4.0f,-2.0f,0.0f);
debugRenderer.AddBoundingBox(
新边界框(上界、下界),
颜色,白色,
假);
}
}

请注意,DebugRenderRender用于调试目的。如果要使DebugRenderer正常工作,需要订阅PostRenderUpdate,如下所示:

Engine.SubscribeToPostRenderUpdate(args => YourMethodHandler);
var dr = app.Scene.GetOrCreateComponent<DebugRenderer>();
app.Engine.PostRenderUpdate += (arg4) => {
    app.Renderer.DrawDebugGeometry(false);
};
app.Renderer.BeginViewRender += (arg5) => {
    dr.AddBoundingBox(new BoundingBox(-1000, 1000), Color.Blue);
    dr.LineAntiAlias = true;
    dr.AddTriangle(new Vector3(2,0,0), new Vector3(2,1,0), new Vector3(2,0,1), Color.Magenta, false);
    dr.AddCircle(new Vector3(2,0,0), new Vector3(1,1,1), 5.0f, Color.Red);
};
通常,您会在设置中执行此操作。然后你的MethodHandler就像:

protected void YourMethodHandler()
{
    // this requires that you have already added a DebugRenderer
    // component in your scene object
    var debugRenderer = scene.GetComponent<DebugRenderer>();

    if (debugRenderer != null)
    {
        // do your drawing code here
        // to draw a rectangle for example:

        var upperBound = new Vector3(-4.0f, 2.0f, 0.0f);
        var lowerBound = new Vector3(4.0f, -2.0f, 0.0f);
        debugRenderer.AddBoundingBox(
            new BoundingBox(upperBound, lowerBound), 
            Color.White, 
            false);
    }
}
protected void YourMethodHandler()
{
//这要求您已经添加了DebugRenderer
//场景对象中的组件
var debugRenderer=scene.GetComponent();
if(debugRenderer!=null)
{
//请在这里输入您的绘图代码
//例如,要绘制矩形,请执行以下操作:
var上限=新矢量3(-4.0f,2.0f,0.0f);
var lowerBound=新矢量3(4.0f,-2.0f,0.0f);
debugRenderer.AddBoundingBox(
新边界框(上界、下界),
颜色,白色,
假);
}
}

更准确地说,它只有在如下实现时才起作用:

Engine.SubscribeToPostRenderUpdate(args => YourMethodHandler);
var dr = app.Scene.GetOrCreateComponent<DebugRenderer>();
app.Engine.PostRenderUpdate += (arg4) => {
    app.Renderer.DrawDebugGeometry(false);
};
app.Renderer.BeginViewRender += (arg5) => {
    dr.AddBoundingBox(new BoundingBox(-1000, 1000), Color.Blue);
    dr.LineAntiAlias = true;
    dr.AddTriangle(new Vector3(2,0,0), new Vector3(2,1,0), new Vector3(2,0,1), Color.Magenta, false);
    dr.AddCircle(new Vector3(2,0,0), new Vector3(1,1,1), 5.0f, Color.Red);
};
var dr=app.Scene.GetOrCreateComponent();
app.Engine.postrendrupdate+=(arg4)=>{
app.Renderer.DrawDebugGeometry(false);
};
app.Renderer.BeginViewRender+=(arg5)=>{
dr.AddBoundingBox(新边界框(-10001000),颜色为.Blue);
Lineatinalias博士=真;
AddTriangle博士(新Vector3(2,0,0)、新Vector3(2,1,0)、新Vector3(2,0,1)、Color.Magenta、false);
AddCircle博士(新矢量3(2,0,0),新矢量3(1,1,1),5.0f,彩色。红色);
};

更准确地说,它只有在如下实现时才起作用:

Engine.SubscribeToPostRenderUpdate(args => YourMethodHandler);
var dr = app.Scene.GetOrCreateComponent<DebugRenderer>();
app.Engine.PostRenderUpdate += (arg4) => {
    app.Renderer.DrawDebugGeometry(false);
};
app.Renderer.BeginViewRender += (arg5) => {
    dr.AddBoundingBox(new BoundingBox(-1000, 1000), Color.Blue);
    dr.LineAntiAlias = true;
    dr.AddTriangle(new Vector3(2,0,0), new Vector3(2,1,0), new Vector3(2,0,1), Color.Magenta, false);
    dr.AddCircle(new Vector3(2,0,0), new Vector3(1,1,1), 5.0f, Color.Red);
};
var dr=app.Scene.GetOrCreateComponent();
app.Engine.postrendrupdate+=(arg4)=>{
app.Renderer.DrawDebugGeometry(false);
};
app.Renderer.BeginViewRender+=(arg5)=>{
dr.AddBoundingBox(新边界框(-10001000),颜色为.Blue);
Lineatinalias博士=真;
AddTriangle博士(新Vector3(2,0,0)、新Vector3(2,1,0)、新Vector3(2,0,1)、Color.Magenta、false);
AddCircle博士(新矢量3(2,0,0),新矢量3(1,1,1),5.0f,彩色。红色);
};

使用DebugRenderer是在三维空间中绘制基本体的唯一方法吗?使用DebugRenderer是在三维空间中绘制基本体的唯一方法吗?