我想在游戏中添加一条线,将左右区域分开。我将一个Gameobject添加到了Canvas中,并添加了以下脚本:
public class DrawLine : MonoBehaviour
{
public Color c1 = Color.red;
public Color c2 = Color.white;
Vector3 topPoint;
Vector3 bottomPoint;
// Start is called before the first frame update
void Start()
{
topPoint = new Vector3(Screen.width / 4, Screen.height);
bottomPoint = new Vector3(Screen.width / 4, 0);
LineRenderer lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
lineRenderer.widthMultiplier = 2.2f;
lineRenderer.positionCount = 40;
// A simple 2 color gradient with a fixed alpha of 1.0f.
float alpha = 1.0f;
Gradient gradient = new Gradient();
gradient.SetKeys(
new GradientColorKey[] { new GradientColorKey(c1, 0.0f), new GradientColorKey(c2, 1.0f) },
new GradientAlphaKey[] { new GradientAlphaKey(alpha, 0.0f), new GradientAlphaKey(alpha, 1.0f) }
);
lineRenderer.colorGradient = gradient;
lineRenderer.SetPosition(0, topPoint);
lineRenderer.SetPosition(1, bottomPoint);
}
}
运行游戏时。将LineRenderer以所需的颜色和宽度添加到游戏对象,但未绘制任何线条。
我在做什么错了?
谢谢
答案 0 :(得分:1)
只需测试您发布的代码,它就可以正常工作。我原本以为线条绘制得太细了,建议将线条的大小调整为在起点和终点处更大,但是经过测试,我确实看到了在编辑器和游戏中绘制的线条。
如果正在创建bindValue
组件,但您既看不到编辑器视图也不是游戏视图,请在运行时发布具有LineRenderer
组件的游戏对象的检查器图像
回复您的评论
使用LineRenderer会在执行LineRenderer
调用时根据代码中选择的位置在3D-Space中在运行时绘制一条线。
在谈论SetPosition
时,我假设您是在谈论 UI画布。
LineRenderer会根据您设置的位置进行绘制,而不是基于Canvas进行绘制,除非您以此方式进行编程。
因此,如果您的相机未放置在可以看到其前面的线的位置,那么它将不会显示在Canvas
中。