2020년 5월 18일 월요일

안드로이드 스튜디오 간단한 지연처리, 딜레이 주기 - Android Studio Handler postDelayed


안드로이드 스튜디오 간단한 지연처리, 딜레이 주기 - Android Studio Handler postDelayed

안드로이드 스튜디오 개발 시 일정시간 딜레이 후에 어떠한 작업을 하고 싶은 경우가 있습니다.
Android studio에서 지원하는 핸들러(handler)를 이용하여 처리할 수 있습니다.

public class MainActivity extends AppCompatActivity {
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(MainActivity .this,LoginActivity.class); //화면 전환
                startActivity(intent);
                finish();

            }
        },1000); //딜레이 타임 조절

    }

}

해당코드는 1초후에 MainActivity에서 LoginActivity로 이동하는 코드입니다.
개발 하시는 분들께서 유용하게 수정해서 사용하시면 됩니다.

감사합니다.

Unity3D Chromakey Shader Code - 유니티 크로마키 쉐이더 코드


Unity3D Chromakey Shader Code - 유니티 크로마키 쉐이더 코드

개발을 하다보면 배경을 지우고 특정 이미지만 남기고 싶은 경우가 생깁니다.
유니티에서 지원하는 쉐이더 기능에 크로마키 코드를 작성하여 원하는 색의 배경을 지울 수 있습니다.

쉐이더 파일 생성하는 법
쉐이더 파일 생성하는 법

유니티에서 쉐이더 파일을 생성한 후 아래 코드를 작성해주시면 됩니다.


Shader "Unlit/chromakey"
{
    Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
                _MaskCol ("Mask Color", Color)  = (0.0, 0.0, 1.0, 1.0) //지우고 싶은 RGB 값 설정
                _Sensitivity ("Threshold Sensitivity", Range(0,1)) = 0.4
                _Smooth ("Smoothing", Range(0,1)) = 0
        }
        SubShader {
                Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
                LOD 100
                ZTest Always Cull Back ZWrite On Lighting Off Fog { Mode off }
                CGPROGRAM
                #pragma surface surf Lambert alpha
 
  struct Input {
                    float2 uv_MainTex;
                };
 
                sampler2D _MainTex;
                float4 _MaskCol;
                float _Sensitivity;
  float _Smooth;
 
                void surf (Input IN, inout SurfaceOutput o) {
                        half4 c = tex2D (_MainTex, IN.uv_MainTex);
 
                        float maskY = 0.2989 * _MaskCol.r + 0.5866 * _MaskCol.g + 0.1145 * _MaskCol.b;
float maskCr = 0.7132 * (_MaskCol.r - maskY);
  float maskCb = 0.5647 * (_MaskCol.b - maskY);
 
float Y = 0.2989 * c.r + 0.5866 * c.g + 0.1145 * c.b;
  float Cr = 0.7132 * (c.r - Y);
  float Cb = 0.5647 * (c.b - Y);
 
  float blendValue = smoothstep(_Sensitivity, _Sensitivity + _Smooth, distance(float2(Cr, Cb), float2(maskCr, maskCb)));
o.Alpha = 1.0 * blendValue;
o.Emission = c.rgb * blendValue;               
                }
                ENDCG
        }
        FallBack "Diffuse"
}


크로마키가 적용된 사진
크로마키 쉐이더가 적용된 사진



감사합니다.