怎么在Unity3D中实现这种线框效果

   更新日期:2024.06.04
可以自己写一个Shader

Shader "Custom/WireFrame"
{
Properties
{
_LineColor ("Line Color", Color) = (1,1,1,1)
_GridColor ("Grid Color", Color) = (1,1,1,0)
_LineWidth ("Line Width", float) = 0.2
}
SubShader
{
Pass
{
//Tags { "RenderType" = "Transparent" }
// Blend SrcAlpha OneMinusSrcAlpha//这句可以注释掉,能够避免线框太粗出现的模糊效果。
//AlphaTest Greater 0.5
//Cull Off//这句是后加的,取消遮挡消隐,体现出透明

CGPROGRAM
#pragma vertex vert
#pragma fragment frag

uniform float4 _LineColor;
uniform float4 _GridColor;
uniform float _LineWidth;

// vertex input: position, uv1, uv2
struct appdata
{
float4 vertex : POSITION;
float4 texcoord1 : TEXCOORD0;
float4 color : COLOR;
};

struct v2f
{
float4 pos : POSITION;
float4 texcoord1 : TEXCOORD0;
float4 color : COLOR;
};

v2f vert (appdata v)
{
v2f o;
o.pos = mul( UNITY_MATRIX_MVP, v.vertex);
o.texcoord1 = v.texcoord1;
o.color = v.color;
return o;
}

fixed4 frag(v2f i) : COLOR
{
fixed4 answer;

float lx = step(_LineWidth, i.texcoord1.x);
float ly = step(_LineWidth, i.texcoord1.y);
float hx = step(i.texcoord1.x, 1.0 - _LineWidth);
float hy = step(i.texcoord1.y, 1.0 - _LineWidth);

answer = lerp(_LineColor, _GridColor, lx*ly*hx*hy);

return answer;
}
ENDCG
}
}
Fallback "Vertex Colored", 1
}
-----材料来自百度知道

  • 19397005741 :Unity3d如何实现滚动文本框?
    蒲奚琛1667 :答:一、在Canvas新建一个Panel,add scroll Rect和mask组件,Rect Transform设成 middle-center,因为这样才能设置大小和text控件相同大小 二、Panel下新建一个Text,Vertical Overflow设置成Overflow,然后add Content Size Fitter这个Layout,该Layout的Vertical Fit设置为Perferred Size,然后调整大小和在Panel中的...
  • 19397005741 :如何在unity3d
    蒲奚琛1667 :答:在unity3d中如何制作鼠标点击按钮,传送人物到目的地。菜鸟需要代码,急...functionOnGUI(){if(GUI.Button(Rect(Screen.width/2,Screen.height-30,50,30),aTexture)){Application.LoadLevel(0);}}在这个脚本赋予前一个scene的camera,Application.LoadLevel(0);输入下一个scene的level就可以了。让...
  • 19397005741 :如何在Unity3d中创建脚本
    蒲奚琛1667 :答:Unity支持三种汇编语言,分别是JS、c#和Boo。创建脚本的方法主要有三种,首先启动Unity,单机菜单栏中的Assets-Create来添加脚本。第二种是启动Unity后,单击Project视图中的Create按钮创建脚本,如图所示。启动Unity应用程序,在Project视图中的assets文件夹内通过右击弹出的 列表框创建脚本,如图所示。添加完脚本...
  • 19397005741 :unity3d怎么添加碰撞体
    蒲奚琛1667 :答:1、首先,打开Unity,创建一个圆球和一个平面。2、将球的高度调高一点,让它位于平面上空。3、给球体添加刚体,输入rigidbody,如下图所示。4、点击运行,带有刚体组件,可以看到小球自然下落到平面上。小球、平面上自带碰撞器,所以小球不能穿过去。5、可以自己给平面一个碰撞器,点击添加碰撞器,如下...
  • 19397005741 :在unity3d里怎么做进度条
    蒲奚琛1667 :答:一、任意建两个场景,分别命名为testScene1、testScene2,两个场景中分别设置“切换场景”按钮,便于立昂场景之间的相互切换,注意,两个切换按钮加载的的场景均是”loadScene“;建loadScene场景,用于处理加载进度条。二、导入NGUI资源包,在Unity3D菜单栏中选中NGUI-Open-Prefab Toolbar,在Prefab Tool...
  • 19397005741 :使用Unity3d实现2d游戏,有几种方式
    蒲奚琛1667 :答:1、使用本身UGUI,UGUI是Unity官方推出的最新UI系统,UI就是UserInterface。2、把摄像机的投影改为正交投影,不考虑Z轴.3、使用Untiy自身的2D模式,在2d模式中,层级视图中只有一个正交摄像机,场景视图选择的是2D模式。4、使用2D TooKit插件,2D Toolkit是一组与Unity环境无缝集成的工具,提供高效的2D...
  • 19397005741 :如何在unity3D中做出如下效果?
    蒲奚琛1667 :答:回答:非要这样的效果的话,在max中可以做六个面以及骨架线。拼成一个立方体。然后贴带透明通道的图。用transparent/diffuse shader。 你可以试试哈。
  • 19397005741 :Unity3D中如何用代码实现物体的左右循环移动?
    蒲奚琛1667 :答:Unity3D中用代码实现物体的左右循环移动的方式如下:1、新建一个Cube,在CubeX轴的正方向放置一个空物体或者其他GameObject,Cube和空物体的Y值一致,确保2者在同一水平线上;2、把下列代码保存为C#,赋给Cube,并在Inspector视图中,把空物体赋到脚本的PointB中;usingUnityEngine;usingSystem.Collections;...
  • 19397005741 :如何在Unity3D 5.x中添加简单的水效果
    蒲奚琛1667 :答:Simple Water”,如下图所示。点击“Daylight Simple Water”,在下拉图中可以看到一个水设置的具体信息,如下图所示。我们将托入到场景中的水模型(椭圆形状)进行拉伸,使其符合场景的需要,如下图所示。然后,点击Unity3D编辑器上的运行按钮,可以看到水效果,可以看到水波在荡漾,效果比较符合现实。
  • 19397005741 :unity3d怎么做碰撞?unity3d如何添加碰撞体?求解!
    蒲奚琛1667 :答:1、打开unity3d场景在里面导入一个相对更复杂的模型。2、首先我们给这个模型添加Rigdibody刚体组件。3、接着在pont给其添加Mesh Collider组件。4、勾选里面的 Convex,会默认根据自己的模型生成一个碰撞范围,但是不是很精确。5、如果要更精确的碰撞,我们可以根据模型对应的部分,创建多个碰撞网格模型。6...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网