unity 场景背景替换2D图片方法

unity 场景背景替换2D图片方法

方法一 二维图片天空球Shader

特点:

直接替换天空球,操作方便

天空球环境光受背景贴图影响

Shader

Shader "Skybox/Background 2D" 
{
	Properties 
	{		  
		_Color("  Color", color) = (1, 1, 1, 1)
		[NoScaleOffset] _MainTex ("  Map", 2D) = "white" {}
	}

	SubShader 
	{
		Tags { "QUEUE"="Background" 
			   "RenderType"="Background" 
			 } 
		LOD 200
		Cull Off ZWrite Off

		Pass 
		{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag
			#include "UnityCG.cginc"

			fixed4 _Color;
			sampler2D _MainTex;

			struct vertOut 
			{
                float4 pos : SV_POSITION;
                float4 scrPos : TEXCOORD0;
            };

            vertOut vert(appdata_base v) 
			{
                vertOut o;
                o.pos = UnityObjectToClipPos (v.vertex);
                o.scrPos = ComputeScreenPos(o.pos);
                
				return o;
            }

            fixed4 frag(vertOut i) : SV_Target 
			{	
                float2 uv = (i.scrPos.xy / i.scrPos.w);

				return tex2D(_MainTex, uv) * _Color;
            }

			ENDCG
		}
	} 
} 

方法二 辅助背景Camera

特点:

设置复杂,控制简单

需要两个Camera

背景Camera设置:

Depth 值要比Main Camera低

Main Camera设置:

ClearFlags设置成Don‘tClear

Camera.main.clearFlags = CameraClearFlags.Nothing;

新建二维背景Canvas:

BackgroundCanvas设置

RenderMode 设置成ScreenSpace-Camera

RenderCamera设置成背景Camera

BackGroundImage背景图片设置:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,关于unity2d点击切换图片的具体实现方法和完整代码,可以参考以下步骤: 1. 在Unity编辑器中创建一个2D场景,将需要切换的图片导入到场景中,并在层次视图中选择相应的图片。 2. 在场景视图中选择该图片,然后在Inspector视图中找到Sprite Renderer组件,为其添加一个新的Sprite Flip组件。 3. 在Sprite Flip组件的“Sprite Flipping”下拉菜单中选择“SingleClick”选项。 4. 在Sprite Flip组件的“Click Action”下拉菜单中选择“Swap Sprite”选项。 5. 在Sprite Flip组件的“Swap Sprite”选项中为其添加需要切换的图片。 6. 在代码中添加以下代码,实现点击切换图片的功能: ```csharp using UnityEngine; using UnityEngine.EventSystems; public class ClickToSwapSprite : MonoBehaviour, IPointerClickHandler { public Sprite sprite1; public Sprite sprite2; private SpriteRenderer spriteRenderer; private void Start() { spriteRenderer = GetComponent<SpriteRenderer>(); } public void OnPointerClick(PointerEventData eventData) { spriteRenderer.sprite = spriteRenderer.sprite == sprite1 ? sprite2 : sprite1; } } ``` 在这里,我们定义了一个ClickToSwapSprite类,实现了IPointerClickHandler接口来处理点击事件,然后声明了两个Sprite类型的变量sprite1和sprite2,分别存储需要切换的两张图片,同时定义了一个私有的SpriteRenderer类型的变量spriteRenderer,用于获取当前游戏对象的SpriteRenderer组件。 在Start()函数中,我们使用GetComponent()方法获取该游戏对象的SpriteRenderer组件。 最后,在OnPointerClick()函数中,我们利用三目运算符来判断当前显示的图片,如果为sprite1,则将其替换为sprite2,否则替换为sprite1,实现了点击切换图片的功能。 希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小生云木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值