Unity3d 如何通过使用相同的纹理将纹理设置为与窗口大小的更改自动匹配

Unity3d 如何通过使用相同的纹理将纹理设置为与窗口大小的更改自动匹配,unity3d,unity5,unity3d-2dtools,Unity3d,Unity5,Unity3d 2dtools,我用unity3D(5.0.2f1)制作了一个小的2D游戏。我拖入了一些纹理作为场景中的背景。它在Unity编辑器中运行得很好,但当我在不同的窗口大小中构建和运行它时就不行了。它不像我在Unity Editor中看到的那样 当窗口大小更改时,我应该如何自动更改纹理大小?以下是图像在编辑器和构建中的外观截图,以及我的构建设置: 也许这些会有帮助 //file ExtensionsHandy.cs using UnityEngine; using UnityEngine.UI; using Syst

我用unity3D(5.0.2f1)制作了一个小的2D游戏。我拖入了一些纹理作为场景中的背景。它在Unity编辑器中运行得很好,但当我在不同的窗口大小中构建和运行它时就不行了。它不像我在Unity Editor中看到的那样

当窗口大小更改时,我应该如何自动更改纹理大小?以下是图像在编辑器和构建中的外观截图,以及我的构建设置:

也许这些会有帮助

//file ExtensionsHandy.cs
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public static class ExtensionsHandy
{
public static float OrthoScreenWidth(this Camera c)
    {
    return
        c.ViewportToWorldPoint(new Vector3(1,1,10)).x
        - c.ViewportToWorldPoint(new Vector3(0,1,10)).x;
    }

public static float OrthoScreenHeight(this Camera c)
    {
    return
        c.ViewportToWorldPoint(new Vector3(0,1,10)).y
        - c.ViewportToWorldPoint(new Vector3(0,0,10)).y;
    }

}
像这样试试

   void Start()
     {
     float w = Camera.main.OrthoScreenWidth();
     Debug.Log("w is " +w.ToString("f4");
     }
注意。如果不熟悉“扩展”: 这里有更多非常方便的扩展

这些将实际将对象移动到屏幕点

比如说,

 transform.ScreenRight();
 transform.ScreenTop();
该对象现在位于屏幕的右上角

并考虑这个……/P>

void Update()
  {
  transform.ScreenRight();
  }
在该示例中:即使用户更改了设备的方向,即使用户调整了屏幕(Mac或Windows)的大小,对象始终位于屏幕的右侧

public static Vector3 WP( this Camera c, float x, float y, float z)
    {
    return c.ViewportToWorldPoint(new Vector3(x,y,z));
    }

public static void ScreenLeft(this GameObject moveme)
    {
    Vector3 rr = moveme.transform.position;

    Vector3 leftTop = Camera.main.WP(0f,1f,0f);
    float leftX = leftTop.x;

    rr.x = leftX;

    moveme.transform.position = rr;
    }

public static void ScreenRight(this GameObject moveme)
    {
    Vector3 rr = moveme.transform.position;

    Vector3 rightTop = Camera.main.WP(1f,1f,0f);
    float rightX = rightTop.x;

    rr.x = rightX;

    moveme.transform.position = rr;
    }

public static void ScreenBottom(this GameObject moveme)
    {
    Vector3 rr = moveme.transform.position;

    Vector3 bottomLeft = Camera.main.WP(0f,0f,0f);
    float bottomY = bottomLeft.y;

    rr.y = bottomY;

    moveme.transform.position = rr;
    }

public static void ScreenTop(this GameObject moveme)
    {
    Vector3 rr = moveme.transform.position;

    Vector3 topLeft = Camera.main.WP(0f,1f,0f);
    float topY = topLeft.y;

    rr.y = topY;

    moveme.transform.position = rr;
    }

希望能有帮助……

我的英语不好。所以我制作了atlas来更好地描述这个问题!你好你的照相机。是正字法吗?是的!2D游戏我使用了Orthorgapogic camera。主摄像头是我游戏中唯一的摄像头。为什么ExtensionHandy不需要继承MonoBehavior?如何在静态类ExtensionHandy中获取主摄像头?我是unity3D的新手。所以…你能帮我更多吗?非常感谢。是的!我发现你的代码扩展了Camera.main。我试过了。但是WP的方法意味着什么呢?呵呵,没问题。请写新问题。“反应式”布局(“屏幕大小”)是一个非常困难的问题。。。。。。极其困难的跨越流动的障碍不允许我再问问题了!因为不久前我问了一个问题!我是StackOverFlow的新人…很抱歉。。。英语对程序员很有用,但我的英语不好。。