愤怒的小鸟下载,Shader.Find应该选哪个才能正确显示发射轨迹

你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
大家好,我最近跟着龚老师的视频教程 《Unity3D愤怒的小鸟》,开发了愤怒的小鸟第一关,基本完成了。
不过目前有个小问题:
我的游戏在Unity Editor里运行,小鸟的轨迹是白色的(正常),如下图 1:
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
不过编译成可执行的exe文件后,在电脑上运行,那个轨迹就变成如下粉红色还很大,奇怪。如下图 2:
然后我试着把 Shader.Find("Particles/Additive") 改为 Shader.Find("Transparent/Diffuse")
这下,在Unity Editor里运行和编译成exe文件运行,轨迹都是偏黑色了,虽然大小正常了,但颜色还是不对。如下图 3:
请教,应该把 Shader.Find里的属性设为什么,才能正常显示白色的轨迹呢?
我的控制轨迹的C#文件内容如下(TraceLine.cs):
using UnityE
using System.C
public class TraceLine : MonoBehaviour {
public GameO // The particle system we created
private int lengthOfLineRenderer = 100;
private LineRenderer lineR
private int index = 0; // The index of the points of the line
private Vector3
private bool stopDrawing = // Stop drawing the line when the bird meets the ground
private GameObject myP
// Use this for initialization
void Start () {
lineRenderer = gameObject.AddComponent();
lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
// lineRenderer.material = new Material(Shader.Find("Transparent/Diffuse"));
lineRenderer.SetColors(Color.white, Color.white);
lineRenderer.SetWidth(0.03f, 0.03f);
lineRenderer.SetVertexCount(1);
IEnumerator OnCollisionEnter(Collision collision) { // If the bird meets the ground, we stop the bird and also stop drawing the traceline
Slingshot.isDrawing = // Stop drawing the traceline
stopDrawing =
if (myParticles == null) { // Make sure that it only be created once
myParticles = (GameObject)Instantiate(particles, transform.position, Quaternion.identity); // The particle system for displaying the feather of bird when it hits something
yield return StartCoroutine(WaitForTime(2.0f));
gameObject.renderer.enabled = // Make bird(Clone) invisible
// Update is called once per frame
void Update () {
if (stopDrawing) {
transform.gameObject.rigidbody.velocity = new Vector3(0, transform.gameObject.rigidbody.velocity.y, transform.gameObject.rigidbody.velocity.z);
transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, transform.localEulerAngles.y, 0);
lineRenderer = GetComponent();
position = transform.
if (Slingshot.isDrawing) {
lineRenderer.SetPosition(index, position);
if (index >= (lengthOfLineRenderer - 1)) {
lineRenderer.SetVertexCount(index+1);
lineRenderer.SetPosition(index, position);
IEnumerator WaitForTime(float seconds) {
yield return new WaitForSeconds(seconds);
new Material的时候用到了Shader.Find()方法,参数是一个字符串,这儿很容易出错;如果只是写错了字符还好,在UnityEditor中Run的时候就会报错,没有找到字符串所指的Shader。假如我们所有的材质球都是用代码new Material,然后Find Shader,就像上述代码所做的那样。Unity在编译的时候是忽略掉字符串的,Unity那么多内置的Shader是不会编译进去的,除非创建一个材质球,使用了某个Shader,并且这个材质球被场景中的某个GameObject引用,那么这个Shader才会被编译进最后的可执行文件中,才能用Find("XxxXxxx")在运行时找到。
你这轨迹不已正常显示出来了么
你这轨迹不已正常显示出来了么还没。在Unity Editor里是白色(正常),但是编译成可执行程序(.exe或者web application等)轨迹就变成第二张图的很粗的粉红色。。。如果我 把 Shader.Find("Particles/Additive") 改为 Shader.Find("Transparent/Diffuse") 则可执行程序里运行,轨迹是像第三张图一样,黑色的。
正在学习中。。。。
把你用到的Shader放到Resources文件夹下打包
变红色是贴图丢失了
没找到shader咯。说明你直接用Shader.Find的方法在导出的时候并没有导出你这里找的shader。所以把shader放到你的打包文件夹里就ok了。
具体的我也忘记了,不过我的是好的
Great, Thanks for share
楼主能分享一份源代码
你好,请问你的问题解决了吗?我也碰到差不多的是发布成apk。
要回复问题请先或
浏览: 2602
关注: 11 人扫一扫,访问微社区
后使用快捷导航没有帐号?
签到成功!您今天第{todayrank}个签到,签到排名竞争激烈,记得每天都来签到哦!已连续签到:{constant}天,累计签到:{days}天
当前位置: &
查看: 70621|回复: 2596
Unity3D学习 愤怒的小鸟攻略技巧秘籍
16排名1昨日变化主题帖子积分
蛮牛币267433
在线时间1995 小时
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
我准备把对如何用制作愤怒的小鸟的研究过程记录下来,希望能完成愤怒的小鸟游戏的大部分功能。好记性不如烂笔头,开始吧!
一、Unity3D学习 愤怒的小鸟之Logo界面
目标:制作开头loading时的Logo界面,4秒后进入下一个界面。
_8433.jpg (95.57 KB, 下载次数: 475)
10:46 上传
1.&&建一个空Project,将屏幕分辨率改为800*600.File---&Build Settings...----& PC and Mac Standalone---& Player Settings...---& Resolution and Presentation
2. 创建一个GUI Texture,重命名为Logo,然后Logo图片放到这个GUI Texture上,修改其参数如下:
_5832.jpg (40.09 KB, 下载次数: 127)
10:46 上传
3. 创建一个Scene,命名为PlayScene。然后把Scene都加入到build中
_7251.jpg (49.87 KB, 下载次数: 238)
10:46 上传
4. 我们来写个脚本实现界面切换功能。[JavaScript] 纯文本查看 复制代码#pragma strict
var timeInterval : int = 4;
var level :
private var timeUpdate :
function Start () {
function Update () {
timeUpdate += Time.deltaT
if (timeUpdate & timeInterval) {
Application.LoadLevel(level);
5. 将这个脚本赋给LogoScene中的camera,将Level值改为1.
OK,运行试试吧!
二、Unity3D学习 愤怒的小鸟之Play界面
(1)目标:制作Play界面的背景,并实现背景循环滚动的效果
_9105.jpg (60.75 KB, 下载次数: 270)
10:50 上传
1. 利用GUITexture搭建背景。这个就跟上面的操作方法一样了,就是注意下每个Texture的位置就行了,拼成一个大背景。拼完就建立一个空的GameObject,把那些Texture组合起来,方便统一管理。注意:修改Z轴数值可以改变各个Texture的前后显示,比如,让Texture1显示在Texture2前面,就使Texture1的Z轴数值大些就可以了
2. 写脚本使背景循环移动原理很简单,就是利用两张背景图循环切换就行了。注意:如果在两张背景图循环切换时发现有空隙,可以使每张背景图的宽度稍微大于屏幕显示宽度就行了。代码很简单:[JavaScript] 纯文本查看 复制代码#pragma strict
var moveSpeed : float = 0.1;
function Start () {
function Update () {
transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
if (transform.position.x &= -1) {
transform.position.x = 1;
OK,将代码赋给两个背景,运行下试试!
(2)目标:改变鼠标样式,使其变成小手
_7509.png (1.94 KB, 下载次数: 306)
10:53 上传
& && && && && && &
_2892.png (2.71 KB, 下载次数: 302)
10:53 上传
原理很简单,就是将原理的鼠标光标隐藏了,然后在OnGUI里在相应的鼠标位置绘制自己喜欢的鼠标图片就行了。直接贴代码了:[JavaScript] 纯文本查看 复制代码#pragma strict
var myCursor : Texture2D;
var myClickCursor : Texture2D;
var cursorWidth :
var cursorHeight :
private var isClicked : boolean =
function Start () {
Screen.showCursor =
function Update () {
if (Input.GetMouseButton(0))
isClicked =
isClicked =
function OnGUI () {
var mousePos = Input.mouseP
if (isClicked)
GUI.DrawTexture(Rect(mousePos.x - cursorWidth / 2, Screen.height - mousePos.y - cursorHeight / 2,
cursorWidth, cursorHeight), myClickCursor);
GUI.DrawTexture(Rect(mousePos.x - cursorWidth / 2, Screen.height - mousePos.y - cursorHeight / 2,
cursorWidth, cursorHeight), myCursor);
点击时和未点击时用不同的图片样式。OK, 试试效果吧!
(3)目标:给Play界面添加一个个性化的Play按钮
_5381.png (211.13 KB, 下载次数: 119)
10:53 上传
添加按钮,我们得用GUI.Button,但是我们需要修改样式,用一个图片作为Button的背景。这就需要GUISkin或者GUIStyle了,两者选一就可以,其实GUISkin就是一堆GUIStyle的组合。本例中我们使用GUISkin,因为后续的界面还要用到别的样式的Button。
1. 创建一个GUISkin, Assets---&Create---&GUI Skin, 然后在Custom Styles添加你想要的按钮图片。2. 接下来我们写代码,添加这个个性化的按钮,我先上代码了。
[JavaScript] 纯文本查看 复制代码#pragma strict
var customSkin : GUIS
function Start () {
function Update () {
function OnGUI () {
GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity,
Vector3(Screen.width / 800.0, Screen.height / 600.0, 1));
GUI.skin = customS
if (GUI.Button(Rect(250, 225, 300, 150), &&, &PlayButton&)) {
Application.LoadLevel(2);
}代码很简单,就是在使用Button之前,将系统的skin换成自定义的skin,然后在GUI.Button函数添加第三个参数,就是custom styles里自定义样式。
OK,运行试试吧!
(4)目标:给Play界面添加一个退出界面和背景音乐
_7537.png (234.32 KB, 下载次数: 237)
10:59 上传
1. 添加一个退出按钮,方法和第四讲添加Play按钮一样[JavaScript] 纯文本查看 复制代码[/p][p=26, null, left]if (GUI.Button(Rect(650, 450, 100, 100), &&, &ExitButton&)) {
2. 添加一个弹出的窗口,用来给用户选择退出还是不退出。[JavaScript] 纯文本查看 复制代码#pragma strict
var customSkin : GUIS
var OKButton : Texture2D;
var cancelButton : Texture2D;
private var showExitWindow : boolean =
function Start () {
function Update () {
function OnGUI () {
GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity,
Vector3(Screen.width / 800.0, Screen.height / 600.0, 1));
GUI.skin = customS
if (showExitWindow) {
GUI.Window(0, Rect(200, 200, 400, 200), DoMyWindow, &&);
if (GUI.Button(Rect(250, 225, 300, 150), &&, &PlayButton&)) {
Application.LoadLevel(2);
if (GUI.Button(Rect(650, 450, 100, 100), &&, &ExitButton&)) {
showExitWindow =
function DoMyWindow () {
if (GUI.Button(Rect(32, 90, 100, 100), cancelButton)) {
showExitWindow =
if (GUI.Button(Rect(267, 90, 100, 100), OKButton)) {
这个代码里涉及到一个新的GUI,那就是Window。使用方法也简单,创建时跟其他GUI控件类似,只不过这里面多一个参数是函数,在这个函数里用户可以绘画自己想要的窗口,以及做自己想做的事。详见:http://docs..com/Documentation/ScriptReference/GUI.Window.html注意:a. 在DoMyWindow函数里绘制GUI时,窗口的大小不能以整个GUI的窗口大小进行绘制,要以你创建的window的大小来绘制。& && && && & b. 创建完window后,你会发现鼠标在window的后面,这时你需要调整下鼠标的深度,在绘制鼠标的那个脚本的OnGUI函数里添加一句:GUI.depth = 0.2f;,这样鼠标就始终在Window之上了
c. 添加背景音乐点击camera,然后选择Component---&Audio---&Audio Source,这样就给camera添加了一个音乐属性,然后将背景音乐文件赋给这个audio source,在选项里将循环播放勾选上,就搞定了。
OK,大事告成,运行下试试!
三、Unity3D学习 愤怒的小鸟之关卡选择界面
目标:实现关卡选择界面
_5296.png (422.32 KB, 下载次数: 190)
10:59 上传
如何用GUITexture做背景,如何用GUISkin做个性化的按钮,如何添加游戏背景音乐,如何修改鼠标样式,这些都是前面提到的知识点,在这里大家用这个界面把之前的都巩固下吧。
[JavaScript] 纯文本查看 复制代码#pragma strict
var customSkin : GUIS
function Start () {
function Update () {
function OnGUI () {
GUI.matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.identity,
Vector3(Screen.width / 800.0, Screen.height / 600.0, 1));
GUI.skin = customS
if (GUI.Button(Rect(125, 100, 150, 150), &&, &Level1&)) {
Application.LoadLevel(3);
if (GUI.Button(Rect(325, 100, 150, 150), &&, &Level2&)) {
if (GUI.Button(Rect(525, 100, 150, 150), &&, &Level3&)) {
if (GUI.Button(Rect(125, 300, 150, 150), &&, &Level4&)) {
if (GUI.Button(Rect(325, 300, 150, 150), &&, &Level5&)) {
if (GUI.Button(Rect(525, 300, 150, 150), &&, &Level6&)) {
if (GUI.Button(Rect(70, 500, 100, 80), &&, &Back&)) {
Application.LoadLevel(1);
OK,运行下试试吧!
四、Unity3D学习 愤怒的小鸟之用Plane制作关卡1背景
(1)目标:用Plane组件制作关卡1的背景
_4935.jpg (60.75 KB, 下载次数: 305)
10:59 上传
之前我们都是在用GUI Texture在制作游戏背景,但是它的渲染效率特别的低,所以一般制作2D游戏时,游戏背景、游戏人物、道具等都是用Plane来做的,然后用camera以90度来照射它们。
1. 首先将Camera的projection属性设置成Orthographic,正交投影啊,然后将size改成50,Clipping Planes的Far改成30,缩小camera的大小。
2. 添加一个Plane,为了让摄像机能垂直照射它,修改它的Rotation属性,然后调节Scale属性让它大点,最后调节Position属性,使之在我们需要的位置。
_1883.jpg (7.58 KB, 下载次数: 101)
10:59 上传
3. 将之前用过的Sky背景图片拖放到Plane上就可以显示了。
4. 但是你会发现背景特别的暗,所以我们再加个平行光Directional Light到场景中来,调节Rotation属性中的X值为32,然后将光的强度Intensity调节到0.6,再将光颜色Color稍微调节下,到自己满意为之。都调完就会出现下面的效果了:
_3866.jpg (34.18 KB, 下载次数: 98)
10:59 上传
5. 然后用同样的方法把场景中其他的元素都加进去吧。注意:在加其他图片时,背景是黑色,这是因为材质设置,得要把材质的Shader设置成透明的Transparent/Diffuse。
_4243.jpg (88.44 KB, 下载次数: 131)
10:59 上传
(2)目标: 完成小鸟在地面上眨眼睛的动画
_3088.jpg (13.63 KB, 下载次数: 217)
10:59 上传
1.&&新建一个Plane来制作小鸟动画,将包含3帧小鸟动画的图片贴到Plane上,然后设置下Plane的Transform属性。
_4085.jpg (7.81 KB, 下载次数: 139)
10:59 上传
为了让这个Plane只显示一个小鸟,将Tiling的x值改为0.33.
2. 下面写个脚本来实现小鸟序列帧动画。[JavaScript] 纯文本查看 复制代码#pragma strict
var rowCount : int = 1;
var colCount : int = 3;
var fps : int = 2;
var isLoop : boolean =
private var curTime : float = 0.0f;
private var lastTime : float = 0.0f;
private var curRow : int = 0;
private var curCol : int = 0;
private var isEnd : boolean =
function Start () {
renderer.material.SetTextureScale(&_MainTex&, new Vector2(1.0 / colCount, 1.0 / rowCount));
renderer.material.SetTextureOffset(&_MainTex&, new Vector2(0, 0));
function Update () {
if (isEnd) {
if (curTime &= lastTime + 1.0f / fps) {
if (curCol &= colCount) {
curCol = 0;
if (curRow &= rowCount) {
if (!isLoop) {
curRow = 0;
renderer.material.SetTextureOffset(&_MainTex&, new Vector2(curCol * 1.0 / colCount, curRow * 1.0 / rowCount));
lastTime = curT
curTime += Time.deltaT
源码下载地址(CSDN):Unity3D学习 愤怒的小鸟之Play界面(二)& && &Unity3D学习 愤怒的小鸟之关卡选择界面(六)&&
云盘下载:游客,如果您要查看本帖隐藏内容请
作者:ariel7321unity3d技巧;unity3d愤怒的小鸟实现;unity3d切换关卡;unity3d切换场景代码;unity3d 透明unity3d diffuse没有;unity3d制作界面;unity3d gui c#;unity3d如何创建材质;unity3d 按钮的制作;unity3d用做游戏;unity3d 5 新功能;unity3unity3d 5 2d动画;unity3d fps 游戏源码;unity3d y轴;unity3d背景贴图;unity3d 建场景;unity3d 使用技巧;unity3d 愤怒的小鸟;unity3d 关卡切换;unity3d 场景切换代码;unity3d shader 透明;unity3d 半透明unity3unity3d 界面制作;unity3d制作开始界面;unity3d开始界面制作;unity3unity3d 创建材质;unity3d 制作按钮;unity3d可以做2d游戏吗;unity3d 做2d游戏;unity3d 5.3 新功能;unity3d 新功能;unity3d 5.0新功能;unity3d 5unity3d 2d动画;unity3d的fps游戏源码;unity3d y轴移动;unity3d 怎么加背景图;unity3d怎样建场景;unity3d 如何添加材质;unity3d 显示unity3d屏幕点击;matrix4x4 unity3d;unity3unity3d 半透明材质;unity3d 5.0 隐藏鼠标;unity3d 切换场景效果
云盘没有了
云盘没有资源????
每日推荐:
蛮牛相关业务合作(市场合作/项目需求/人才招聘)联系-崇慕 QQ:
3178/300排名<font color="#FF昨日变化30主题帖子积分
偶尔光临, 积分 178, 距离下一级还需 122 积分
偶尔光临, 积分 178, 距离下一级还需 122 积分
在线时间121 小时
一脸不好意思的收了
每日推荐:
116/50主题帖子积分
注册看看, 积分 16, 距离下一级还需 34 积分
注册看看, 积分 16, 距离下一级还需 34 积分
在线时间0 小时
不错,分析的很细致,也行透彻。
每日推荐:
2149/150排名<font color="#FF昨日变化16主题帖子积分
初来乍到, 积分 149, 距离下一级还需 1 积分
初来乍到, 积分 149, 距离下一级还需 1 积分
在线时间44 小时
学习!学习@
每日推荐:
138/50排名<font color="#FF昨日变化19主题帖子积分
注册看看, 积分 38, 距离下一级还需 12 积分
注册看看, 积分 38, 距离下一级还需 12 积分
在线时间9 小时
哇塞哇塞哇塞啊好棒啊,看上去不错的样子
每日推荐:
15/50排名<font color="#FF昨日变化201主题帖子积分
注册看看, 积分 5, 距离下一级还需 45 积分
注册看看, 积分 5, 距离下一级还需 45 积分
在线时间1 小时
感謝大大無私分'想
每日推荐:
73875/5000排名25昨日变化主题帖子积分
日久生情, 积分 3875, 距离下一级还需 1125 积分
日久生情, 积分 3875, 距离下一级还需 1125 积分
蛮牛币8876
在线时间830 小时
好东西啊:lol学习了
每日推荐:
61202/1500排名<font color="#FF昨日变化主题帖子积分
蛮牛粉丝, 积分 1202, 距离下一级还需 298 积分
蛮牛粉丝, 积分 1202, 距离下一级还需 298 积分
蛮牛币2353
在线时间117 小时
感谢分享,
每日推荐:
268/150排名<font color="#FF昨日变化14主题帖子积分
初来乍到, 积分 68, 距离下一级还需 82 积分
初来乍到, 积分 68, 距离下一级还需 82 积分
在线时间18 小时
xxxxxxxxxx
每日推荐:
13/50排名<font color="#FF昨日变化201主题帖子积分
注册看看, 积分 3, 距离下一级还需 47 积分
注册看看, 积分 3, 距离下一级还需 47 积分
在线时间1 小时
没想到愤怒的小鸟都有源码可供学习,好!
每日推荐:
126/50排名<font color="#FF昨日变化30主题帖子积分
注册看看, 积分 26, 距离下一级还需 24 积分
注册看看, 积分 26, 距离下一级还需 24 积分
在线时间1 小时
谢谢分享!
每日推荐:
3194/300排名<font color="#FF昨日变化14主题帖子积分
偶尔光临, 积分 194, 距离下一级还需 106 积分
偶尔光临, 积分 194, 距离下一级还需 106 积分
在线时间118 小时
真的是很不错啊 学习了
每日推荐:
19/50排名<font color="#FF昨日变化201主题帖子积分
注册看看, 积分 9, 距离下一级还需 41 积分
注册看看, 积分 9, 距离下一级还需 41 积分
在线时间1 小时
GOOOODDDD非常非常好的啊!!
每日推荐:
126/50排名<font color="#FF昨日变化201主题帖子积分
注册看看, 积分 26, 距离下一级还需 24 积分
注册看看, 积分 26, 距离下一级还需 24 积分
在线时间2 小时
谢谢楼主分享资源~~~~~~~~~~~···
每日推荐:
114/50主题帖子积分
注册看看, 积分 14, 距离下一级还需 36 积分
注册看看, 积分 14, 距离下一级还需 36 积分
在线时间0 小时
非常感谢!!!
每日推荐:
1 / 174 页
蛮牛论坛干货区作者
社区QQ达人
使用QQ帐号登录论坛的用户
游戏蛮牛QQ群会员
加入游戏蛮牛官方QQ群
连续签到30天

我要回帖

更多关于 愤怒的小鸟太空选关版 的文章

 

随机推荐