我创建了一个新的游戏对象:图像组件添加到游戏物体新
GameObject newObject = new GameObject("ObjectName");
newObject.AddComponent<RectTransform>();
newObject.GetComponent<RectTransform>().sizeDelta = new Vector2(width, height);
我正在寻找一种方式来添加图像(脚本)颜色的目的。 我该怎么办?
我创建了一个新的游戏对象:图像组件添加到游戏物体新
GameObject newObject = new GameObject("ObjectName");
newObject.AddComponent<RectTransform>();
newObject.GetComponent<RectTransform>().sizeDelta = new Vector2(width, height);
我正在寻找一种方式来添加图像(脚本)颜色的目的。 我该怎么办?
与添加RectTransform相同的方式。
newObject.AddComponent<Image>();
您还需要添加using UnityEngine.UI
能够找到图像组件。
这增加了图像部件到您的游戏对象:
newObject.AddComponent<Image>();
更多的事情是为了完成对Image
组件显示:
.Create的画布。包括创建将保存Canvas的GameObject,然后将Canvas组件附加到它。您还必须将其他重要的UI组件(如CanvasScaler
和GraphicRaycaster
)附加到Canvas
。
.Create您Image
游戏物体与new GameObject("ObjectName");
然后调用newObject.AddComponent<Image>();
到图像组件附加到游戏物体。
。制作Image
GameObject是Canvas
的子项。
这是创建一个画布和图像作为孩子的全过程:
void Start()
{
//Create Canvas
GameObject canvas = createCanvas(false);
//Create your Image GameObject
GameObject newObject = new GameObject("ObjectName");
//Make the GameObject child of the Canvas
newObject.transform.SetParent(canvas.transform);
//Add Image Component to it(This will add RectTransform as-well)
newObject.AddComponent<Image>();
//Center Image to screen
newObject.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
}
//Creates Hidden GameObject and attaches Canvas component to it
private GameObject createCanvas(bool hide)
{
//Create Canvas GameObject
GameObject tempCanvas = new GameObject("Canvas");
if (hide)
{
tempCanvas.hideFlags = HideFlags.HideAndDontSave;
}
//Create and Add Canvas Component
Canvas cnvs = tempCanvas.AddComponent<Canvas>();
cnvs.renderMode = RenderMode.ScreenSpaceOverlay;
cnvs.pixelPerfect = false;
//Set Cavas sorting order to be above other Canvas sorting order
cnvs.sortingOrder = 12;
cnvs.targetDisplay = 0;
addCanvasScaler(tempCanvas);
addGraphicsRaycaster(tempCanvas);
return tempCanvas;
}
//Adds CanvasScaler component to the Canvas GameObject
private void addCanvasScaler(GameObject parentaCanvas)
{
CanvasScaler cvsl = parentaCanvas.AddComponent<CanvasScaler>();
cvsl.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
cvsl.referenceResolution = new Vector2(800f, 600f);
cvsl.matchWidthOrHeight = 0.5f;
cvsl.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
cvsl.referencePixelsPerUnit = 100f;
}
//Adds GraphicRaycaster component to the Canvas GameObject
private void addGraphicsRaycaster(GameObject parentaCanvas)
{
GraphicRaycaster grcter = parentaCanvas.AddComponent<GraphicRaycaster>();
grcter.ignoreReversedGraphics = true;
grcter.blockingObjects = GraphicRaycaster.BlockingObjects.None;
}
RectTransform
主要用于UI目的。如果你有一个帆布已经成立,那么你可以添加一个Image
成分,但你会希望将其设置为画布的孩子:
using UnityEngine;
using UnityEngine.UI;
public class ImageTest : MonoBehaviour {
public Canvas canvas;
public Sprite sprite;
public float width = 10;
public float height = 10;
private void Start() {
GameObject newObject = new GameObject("ObjectName");
RectTransform rectTransform = newObject.AddComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(width, height);
Image image = newObject.AddComponent<Image>();
image.sprite = sprite;
newObject.transform.SetParent(canvas.transform, false);
}
};
如果你只想把精灵在场景,你可以使用一个SpriteRenderer
:
using UnityEngine;
public class SpriteTest : MonoBehaviour {
public Sprite sprite;
private void Start() {
GameObject newObject = new GameObject("ObjectName");
SpriteRenderer spriteRenderer = newObject.AddComponent<SpriteRenderer>();
spriteRenderer.sprite = sprite;
}
}
或者干脆表现出的质感,可以覆盖在一个MeshRenderer
的材料主要材质:采用UnityEngine
using UnityEngine;
public class TextureTest : MonoBehaviour {
public Texture texture;
private void Start() {
GameObject newObject = GameObject.CreatePrimitive(PrimitiveType.Quad);
MeshRenderer meshRenderer = newObject.GetComponent<MeshRenderer>();
meshRenderer.material.mainTexture = texture;
}
}
' .UI'这就是我错过的! – David