【发布时间】:2022-01-19 21:18:40
【问题描述】:
在一个空场景中,我添加了一个空游戏对象并将其称为“脚本”。我附加了一个创建纹理对象并在其上放置精灵渲染器的 C# 脚本。渲染网络摄像头图像。我想更改显示精灵的比例。通过脚本游戏对象的检查器->转换->缩放已经可以手动更改此更改。但是,我只想更改一个参数,因此我需要在脚本中添加一个公共参数。即使脚本中没有实例化这样的游戏对象,我如何 - 从脚本中访问空脚本的转换比例?
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Runtime.InteropServices;
[RequireComponent(typeof(SpriteRenderer))]
public class contours : MonoBehaviour
{
SpriteRenderer rend;
void Start()
{
tex = new Texture2D(432, 240, TextureFormat.RGBA32, false);
rend = GetComponent<SpriteRenderer>();
}
void Update()
{
pixel32 = tex.GetPixels32();
//get a customized texture here
tex.SetPixels32(pixel32);
tex.Apply();
//create a sprite from that texture
Sprite newSprite = Sprite.Create(tex, new Rect(0, 0,432,240), new Vector2(0.5f, 0.5f), 100F, 0, SpriteMeshType.FullRect);
rend.sprite = newSprite;
}
【问题讨论】:
-
我不是 100% 确定你在问什么。如果一个游戏对象没有被实例化,那么你就不能改变它的规模,因为这个游戏对象不存在。实例化
Texture(game?) 对象的 C# 代码将引用该对象。想必你可以在上面调用GetComponent来获取Transform组件,并用一些代码调整比例 -
我很难回答这个问题,因为我看不到您的检查器窗口(或您的游戏对象)(或生成新游戏对象的代码)
-
您应该能够使用
GetComponent<Transform>();从轮廓单一行为内的任何位置获取对变换组件的引用。然后您可以使用referenceToTransform.localScale = new Vector3(1, 0, 1);使用代码更新 X/Y/Z 值。假设轮廓 monobehaviour 存在于我在您的层次结构中看到的“脚本”对象上 -
是的,应该可以。但请记住,如果比例每次都相同,您不需要每帧更新
localScale,因此您也可以将reference.localScale = whatever移动到您的Start()方法中,至少对于这种特定情况 -
是的。我希望能够在播放模式期间更改比例
标签: unity3d sprite scale gameobject