0%

Unity 3d场景中的2d图片辅助线

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67

using UnityEngine;

public class GuideLine : MonoBehaviour
{
private Transform[] dotsList; //辅助线节点列表
public GameObject dot;//辅助线节点
public float dotScale = 2f;//节点缩放
public int dotsNumber = 50;//节点数量
private void Start()
{
InitGuideLine();//初始化辅助线
}
/// <summary>
/// 初始化辅助线
/// </summary>
private void InitGuideLine()
{
dotsList = new Transform[dotsNumber];//初始化节点列表

dot.transform.localScale = Vector3.one * dotScale;//初始化节点缩放

for (var i = 0; i < dotsNumber; ++i)//遍历生成节点
{
dotsList[i] = Instantiate(dot, null).transform;//生成节点对象
dotsList[i].parent = transform;//设置节点的父物体
dotsList[i].localPosition = Vector3.zero;//设置节点自身位置
}
Hide();//隐藏辅助线
}
/// <summary>
/// 辅助线更新
/// </summary>
public void GuideLineUpdata(GameObject obj)//obj是辅助线要连接到的对象
{
Show();//显示辅助线

Vector3 startPoint = transform.position;//获取辅助线起始点
Vector3 endPoint = obj.transform.position;//获取辅助线终点

Vector3 step = (endPoint - startPoint) / (dotsNumber - 1);//计算节点间隔

for (int i = 1; i < dotsNumber; i++)//遍历设置节点坐标
{
dotsList[i].position = startPoint + step * i;//设置坐标
Debug.Log($"Pos {i}: {dotsList[i].position}");
}
}
/// <summary>
/// 隐藏辅助线
/// </summary>
public void Hide()
{
gameObject.SetActive(false);//隐藏对象
}
/// <summary>
/// 显示辅助线
/// </summary>
public void Show()
{
gameObject.SetActive(true); //显示对象
}



}