粘貼不了新的東西(粘貼突然不能用了)
1729
2025-03-31
推薦閱讀
CSDN主頁
GitHub開源地址
Unity3D插件分享
簡書地址
我的個人博客
QQ群:1040082875
大家好,我是佛系工程師
☆恬靜的小魔龍☆
,不定時更新Unity開發技巧,覺得有用記得一鍵三連哦。
一、前言
最近開發的時候遇到了箭頭指向的需求,本來想用我這篇文章中的代碼來著:
【Unity3D日常開發】Unity中實現箭頭指向效果實現
但是想到這個代碼是在Update里面運行,對效率影響比較大,正好看到這個同學給我留言:
我看了一下他這個是通過Shader和MeshRenderer進行實現的,效率應該會更好。但是文章的步驟就我來說有點簡單了,可能不知道怎么用,所以就將他的內容再細分一下。
效果圖:
二、正文
2-1、制作Shader
(1)首先,將我們的圖片導入:
右鍵另存為,保存到項目中。
(2)新建Shader,在Project視圖中選擇Create→Shader→Standard Surface Shader
將代碼復制粘貼進去:
Shader "Custom/NavPathArrow" { Properties { _MainTex("Texture", 2D) = "white" {} _ScrollYSpeed("Y Scroll Speed", Range(-20, 20)) = 2 } SubShader { Tags { "Queue" = "Transparent" "RenderType" = "Transparent" } LOD 100 //雙面渲染 Cull Off //Alpha混合 Blend SrcAlpha OneMinusSrcAlpha Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; fixed _ScrollYSpeed; v2f vert(appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } fixed4 frag(v2f i) : SV_Target { fixed2 uv = i.uv; uv.y += _ScrollYSpeed * _Time; fixed4 col = tex2D(_MainTex, uv); return col; } ENDCG } } }
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
2-2、制作材質球
新建材質球,在Project視圖中選擇Create→Material,命名為NavPathArrow:
設置材質球的屬性,將Shader設置為Custom/NavPathArrow,將貼圖拖進去:
2-3、制作預制體
(1)新建一個Quad對象,在Hierarchy視圖,右擊選擇Create→Quad:
將它的材質球換成剛才我們制作的材質球:
拖到Project視圖,做成預制體:
2-4、實現代碼
新建腳本NavPathArrow.cs,雙擊打開腳本,編寫代碼:
using System.Collections; using System.Collections.Generic; using UnityEngine; ///
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
2-5、實現功能
新建三個Cube作為路徑點,一個Plane作為地板,攝像機直接使用命令Ctrl+Shift+F對齊到窗口就行:
把腳本附給Plane,然后把路徑點也就是三個Cube,然后預制體Quad拖進去:
運行程序:
三、后記
你的就是對博主的支持,有問題記得留言:
博主還有跟多寶藏文章等待你的發掘哦:
5G游戲 unity
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。