Get it on Google Play


Wm뮤 :: 'Unity' 카테고리의 글 목록 (2 Page)

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
퇴직한 전자과 게임프로그래머
2020.3.48f1 , 2022.3.6f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


2023. 12. 18. 13:42 Unity/shader

 

 

Shader error in 'Ahzkwid/Toon': Output variable vert contains a system-interpreted value (SV_RenderTargetArrayIndex) which must be written in every execution path of the shader.  Unconditional initialization may help. at line 586 (on d3d11)

유니티 2019에서는 발생 안 하다가 2022에서 급작스럽게 발생했다.

원인은 struct v2f의 UNITY_VERTEX_OUTPUT_STEREO 구조변경 때문이다.

 

appdata와 vert에 아래구문을 추가한다

struct appdata
{
    UNITY_VERTEX_INPUT_INSTANCE_ID
};
v2f vert (appdata v)
{
    v2f o;

    UNITY_SETUP_INSTANCE_ID(v);
    UNITY_INITIALIZE_OUTPUT(v2f, o); 
    UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
}

 

참고링크 : https://docs.unity3d.com/kr/2019.4/Manual/SinglePassInstancing.html

 

 

 

 

 

Shader error in 'Ahzkwid/KotatsuFuton': invalid subscript 'instanceID' at line 339 (on d3d11)
Compiling Subshader: 0, Pass: FORWARD, Vertex program with DIRECTIONAL STEREO_INSTANCING_ON VERTEXLIGHT_ON

 

위와 같은 문제이다.

위와 다른점은 위에건 버텍스 프래그 쉐이더를 썼지만 이건 서피스와 버텍스 혼합 쉐이더에서 발생한 차이점이 있다.

내 경우엔 프래그를 안 가져와서 void vert이기 때문에 appdata에 아래 구문 추가하는거로 끝났다.

struct appdata
{
    UNITY_VERTEX_INPUT_INSTANCE_ID
};

'Unity > shader' 카테고리의 다른 글

DepthCameraTexture를 _CameraDepthTexture처럼 쓰기  (0) 2023.10.14
PerlinNoise HLSL  (0) 2023.04.25
스크린 오버레이 샘플  (0) 2023.01.20
posted by 모카쨩
2023. 11. 27. 21:10 Unity

 

 

https://assetstore.unity.com/publishing/submission-guidelines

 

Unity Asset Store Submission Guidelines - Asset Store

Submission Guidelines give new and existing publishers a comprehensive understanding of what is expected of products submitted to the Unity Asset Store.

assetstore.unity.com

 

 

 

 

 

 

 

 

 

 

 

 

 

'Unity' 카테고리의 다른 글

매트캡 생성하기  (0) 2024.01.18
에셋스토어 업로드 2023  (0) 2023.11.21
메쉬베이커 사용법  (0) 2023.11.15
posted by 모카쨩
2023. 11. 21. 01:28 Unity

 

 

 

https://wmmu.tistory.com/entry/%EC%97%90%EC%85%8B%EC%8A%A4%ED%86%A0%EC%96%B4

 

에셋스토어 업로드

가이드라인 unity3d.com/asset-store/sell-assets/submission-guidelines 설명서 unity3d.com/asset-store/sell-assets 눌러 그러면 여기로 이동됨 publisher.assetstore.unity3d.com/sales.html publisher.assetstore.unity3d.com/create.html 만든다

wmmu.tistory.com

2021판

 

 

 

 

 

가이드라인

unity3d.com/asset-store/sell-assets/submission-guidelines

 

설명서

unity3d.com/asset-store/sell-assets

눌러

 

그러면 여기로 이동됨

publisher.assetstore.unity3d.com/sales.html

 

 

publisher.assetstore.unity3d.com/create.html

 

만든다

publisher.assetstore.unity3d.com/packages.html

그러면 여기로 가서

 

세이브를 하면 초안이 완성된다

 

 

 

 

아래로 내려서 더 작성하자

메타데이터 Edit를 누른다

 

 

 

필수는 아니지만 가능하면 이름까지 만들어주자

 

 

 

 

 

아래로 좀더 내려서 Asset Store Tools 누르고

 

 

에셋 추가

 

 

패키지매니저 열어서 임포트

 

그러면 이렇게 에셋이 생긴다

난 보드게임을 올릴것

 

 

 

 

눌러

 

 

 

로그인

 

 

 

 

Include Package Manifest

이건 체크 안해도 된다

아마 간접적으로 연결된 에셋들도 엮는거 같은데 그러면 불필요한것까지 같이 올라갈수도있을듯

 

2021.3으로 업데하라고 한다.

일단은 업로드 하고 나서 업데이트 해서 다시 업로드 하자

 

 

1차완료

 

 

다시 메타데이터를 짤때다

Icon Image랑 Card Image는 둘다 아이콘이미지인데 사이즈의 차이

Cover Image는 찍고 들어가면 왼쪽에 뜨는 이미지

셋다 필수고

Social Media Image는 필수는 아닌거 같은데 그래도 넣어주자

다 똑같은 이미지로 해도 된다

 

 

 

스크린샷들을 올리는곳, 많을수록 좋다

커버이미지에 넣었던건 넣지말자

 

 

다끝난줄 알았니? 아니다. 호환목록을 작성해주어야 한다.

 

 

1. 3D모델인데 문제없다

2. 내거가 2019라 2019로 해줌

3. 기존 렌더파이프랑 호환되는지, 스탠다드는 유니티 스탠다드를 말하고,

LW는 모바일, HD는 멀티패스같은 고퀄용, Custom RP는 말그대로 커스텀된거

나는 일반 마테리얼이라서 전부 호환된다

4. 다른 패키지를 받아야만 쓸수있는건지, 나는 그없이니 No했다

 

 

 

 

다했으면 올리삼

무슨 팝업뜨면  그냥 OK하면 된다

 

 

 

 

 

 

 

 

 

 

 

 

그리고 업로드 반려됨

 

 

띠바 온라인

 

 

 

https://publisher.unity.com/packages

 

Unity ID

이중 인증 코드가 만료되었니다. 이중 인증 활성화를 재시작하려면 페이지를 새로 고침하세요 페이지 새로 고침

id.unity.com

 

여기서

 

 

 

 

 

 

 

 

 

이러면 Draft에 올라가서 패키지 다시 올릴수 있다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

아래는 옛날 사진들

 

'Unity' 카테고리의 다른 글

에셋스토어 업로드 거부사례 모음  (0) 2023.11.27
메쉬베이커 사용법  (0) 2023.11.15
unity mmd 관련  (0) 2023.10.01
posted by 모카쨩
2023. 11. 15. 16:11 Unity

 

https://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017

 

Mesh Baker | 모델링 | Unity Asset Store

Get the Mesh Baker package from Ian Deane and speed up your game development process. Find this & other 모델링 options on the Unity Asset Store.

assetstore.unity.com

 

무료판 써도 작동은 한다

 

 

 

 

 

 

합치고 싶은 메쉬 최상단 오브젝트에 컴포넌트 위처럼 넣고 돌린다

결과물

 

 

 

이거 사용할때 주의점이 무조건 드로우콜 낮으면 좋은줄 알고 다 합쳐버리는 사람도 있는데 

PC기준 드로우콜 1000, 모바일 기준 드로우콜 200까지는 성능에 전혀 영향이 없고 버텍스 갯수에 영향받는다

즉 다 합쳐버리면 컬링이 안 되므로 오히려 무거워진다

 

그래서 드로우콜이 너무 뜨지 않는 이상 안 합치는게 좋음

버텍스는 PC기준 3M 이하가 좋다

위 기준은 2020기준이라 추후 기기 스펙에 따라 달라짐

 

실제로 전에 어디서 주워들은건 있어서 드로우콜만 영향받는줄 알고 빡빡 우기는 사람도 있더라, 아는척 하려면 테스팅 한번은 해보고 아는척 하자

 

 

그리고 벽투과 아웃라인 생성할때 (옵치 화물표시같은거) 메쉬가 쪼개져 있으면 서로 간섭하는 문제 있는데 해당현상 해결용으로 쓸수도 있다 

 

 

 

 

 

 

 

 

 

 

 

 

'Texture Bake Result' must be set to add more objects to a combined mesh that already contains objects. Try enabling 'clear buffers after bake'

오류가 뜰경우

 

Clear Buffers After Bake 체크

 

 

 

 

 

 

 

아래는 구버전사용할때 캡쳐해둔거

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Unity' 카테고리의 다른 글

에셋스토어 업로드 2023  (0) 2023.11.21
unity mmd 관련  (0) 2023.10.01
유니티 애드몹 2023  (0) 2023.09.24
posted by 모카쨩
2023. 10. 14. 12:29 Unity/shader

 

 

Shader "Unlit/AndroidDepth"
{
    Properties
    {
		_DepthTex("_DepthTex", 2D) = "white" {}
    }
    SubShader
    {
        Tags { 
		"RenderType" = "Transparent"
		"Queue" = "Transparent"
        }
        LOD 100
        
        ZWrite Off

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;

				float4 screenPos : TEXCOORD1;
            };

            
			sampler2D _DepthTex;
			float4 _DepthTex_ST;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _DepthTex);
				o.screenPos = ComputeScreenPos(o.vertex);//면이 닿는 부분
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {



                
				
				float4 screenPos = float4(i.screenPos.xyz, i.screenPos.w);
				float4 screenPosNorm = screenPos / screenPos.w;


				
				screenPosNorm.x*= _ScreenParams.x/ _ScreenParams.y;
				screenPosNorm.x+= 0.5;
				screenPosNorm.x-= _ScreenParams.x/ _ScreenParams.y/2;


				screenPosNorm.y*=_DepthTex_ST.y;
				screenPosNorm.x*=_DepthTex_ST.y;
				
				screenPosNorm.x+=0.5;
				screenPosNorm.x-=_DepthTex_ST.y/2;
				
				
				float depCol= tex2D(_DepthTex, screenPosNorm.xy);
				
				 fixed4 col=0;
				col.a=1;
				col.r=depCol*2;



                return col;
            }
            ENDCG
        }
    }
}

단 처음에 Rect사이즈를 가져와야 한다

이걸

이렇게 넣으면 끝

내가 이걸 왜 만들었냐 하면 안드로이드에선

정확히는 안드로이드의 OpenGLES3에서 _CameraDepthTexture를 가져올때 문제가 발생하기 때문

그리고 만약 멀티플랫폼을 지원해야 한다면 아래와같은 분기처리를 해줘야 한다

 #if UNITY_IOS || UNITY_STANDALONE
 //기존코드
#else
//커스텀 뎁스
#endif

그리고 당연히 카메라설정도 반영해야 하는데 난 FOV만 바꿔서 FOV만 설정함

using UnityEngine;

public class CameraCopy : MonoBehaviour
{
    void Update()
    {
        var camMain = Camera.main;
        var camThis = GetComponent<Camera>();
        camThis.fieldOfView = camMain.fieldOfView;
    }
}

뎁스 카메라에 이걸 넣어줌

 

결과물

근데 빌드하고 보니 뎁스 카메라도 안 되더라

찌발

 

 

왠지 렌더텍스처를 동적으로 생성하면 될거같기도 한데

이러면 생성할때마다 마테리얼에 하나하나 할당해줄거 생각하니 끔찍해서

결국 분기처리해서 안드로이드쓸때만 작동 안 하게 함

(어차피 아이폰은 된다고)

'Unity > shader' 카테고리의 다른 글

유니티 쉐이더 오류 모음  (0) 2023.12.18
PerlinNoise HLSL  (0) 2023.04.25
스크린 오버레이 샘플  (0) 2023.01.20
posted by 모카쨩
2023. 10. 1. 17:51

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2023. 9. 24. 06:35 Unity

 

 

 

https://wmmu.tistory.com/entry/FireBase-%EC%95%A0%EB%93%9C%EB%AA%B9

 

유니티 애드몹 2021

얘내들은 툭하면 API를 바꾼다. 개빡칠노릇 설명서 developers.google.com/admob/unity/quick-start?hl=ko 해당링크에서 들어가보면 이런걸 다운받아서 쓰라고 한다 github.com/googleads/googleads-mobile-unity/releases/tag/v5

wmmu.tistory.com

 

 

진짜 미쿠친구들인가?

또또또 API 바꿨다

기능차이도 없던데 대체 왜 바꾼거임?

일단 대략적인건 위 링크이고

이번엔 기존에 있던 플러그인을 업뎃하는 작업만 해서

신규프로젝트에서 작업하면 뭔가 새로운 창이 뜰지도 모른다

 

 

 

설명서

https://developers.google.com/admob/unity/quick-start?hl=ko 

 

해당링크에서 플러그인 다운로드 링크 누르면 뭐 가입하라고 궁시렁 대는데

https://github.com/googleads/googleads-mobile-unity/releases/tag/v8.5.2

걍 여기서 유니티 패키지를 다운받아서 푼다

 

 

저기엔 안 써있는데 2020.3.48f1이 아니면 오류폭탄이 날아온다

버전이 낮아도 안되고 높아도 안 된다

2021.1.10f1까지는 작동은 되더라

2019.4.31f1은 미지원이다

 

 

 

일단 업뎃과정에서 플러그인 싹 지우고 넣었기 때문에 세팅이 날아가서 다시 설정해줌

그래도 이번엔 뭐 이상한 창 안떠서 다행이네

 

누르고 생기는 스크립트오브젝트에 애드몹 코드를 입력한다

없으면 하단의 샘플코드를 넣는다

ca-app-pub-3940256099942544~1033173712

키가 이상하면 강종당하니 조심하자

 

 

 

https://apps.admob.com/

애드몹 코드는 애드몹사이트에서

 

여기에 숨겨져있다 ~가 들어간 코드여야 한다

 

전면광고방법

https://developers.google.com/admob/unity/interstitial?hl=ko 

 

 

코드가 많이 바뀌었다

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds.Api;
public class AdMobLoader : MonoBehaviour
{
#if UNITY_ANDROID
    string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IOS
        string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
        string adUnitId = "unexpected_platform";
#endif

    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(initStatus => { });

        RequestInterstitial();

    }

    public void Update()
    {
    }


    private InterstitialAd interstitialAd;

    private void RequestInterstitial()
    {
        // create our request used to load the ad.
        var adRequest = new AdRequest();

        // send the request to load the ad.
        InterstitialAd.Load(adUnitId, adRequest,
            (InterstitialAd ad, LoadAdError error) =>
            {
                // if error is not null, the load request failed.
                if (error != null || ad == null)
                {
                    Debug.LogError("interstitial ad failed to load an ad " +
                                   "with error : " + error);
                    return;
                }

                Debug.Log("Interstitial ad loaded with response : "
                          + ad.GetResponseInfo());

                interstitialAd = ad;

                //로드끝나면 5초뒤 광고표시
                Invoke(nameof(ShowInterstitial), timer);
            });
    }
    public float timer = 5f;
    void ShowInterstitial()
    {
        Debug.Log("광고가 표시됨");
        //if (interstitialAd.CanShowAd())
        {
            interstitialAd.Show();
        }
    }

    private void InterstitialDestroy()
    {
        interstitialAd.Destroy();
    }
}

기본 샘플코드를 이용하여 만들어봤다

이번에 개많이 바뀌어서 개고생함

이러고 또 나중에 바뀌겠지 ㅡㅡ

 

 

 

위 코드에 들어가는 키위치는 여기고 /가 들어간 코드여야 한다

 

 

 

필수적인 작업은 다 끝났다

이제 부가작업

이거 넣어줘야 에디터에서 안드로이드모드로 재생해도 오류가 안 뜬다

 

 

 

 

 

 

 

 

 

'Unity' 카테고리의 다른 글

unity mmd 관련  (0) 2023.10.01
유니티 캐릭터 추적 마커  (0) 2023.09.21
유니티 APK 용량  (0) 2023.09.08
posted by 모카쨩
2023. 9. 21. 03:08 Unity

 


    public GameObject playerIcon;
     List<GameObject> playerIcons = new List<GameObject>();
    void Start()
    {
        playerIcon.SetActive(false);
    }
    void LateUpdate()
    {
        var gameSystem = GetComponent<GameSystem>();
        {
            //아군 식별 마커
            var characters = GameSystem.GetInGameCharacters(gameSystem.team);
            for (int i = playerIcons.Count; i < characters.Length; i++)
            {
                var instant = Instantiate(playerIcon, playerIcon.transform.parent);
                playerIcons.Add(instant);
            }
            for (int i = characters.Length; i < playerIcons.Count; i++)
            {
                playerIcons[i].SetActive(false);
            }
            var cam = Camera.main;
            for (int i = 0; i < characters.Length; i++)
            {
                var markerPosition = characters[i].transform.position + Vector3.up * 1f;
                if ((Vector3.Distance(markerPosition, cam.transform.position) > 10)
                    && (Quaternion.Angle(cam.transform.rotation, Quaternion.LookRotation(markerPosition - cam.transform.position)) < 90))
                {
                    var screenPoint = RectTransformUtility.WorldToScreenPoint(cam, markerPosition);
                    playerIcons[i].SetActive(true);
                    playerIcons[i].GetComponent<RectTransform>().position = screenPoint;
                }
                else
                {
                    playerIcons[i].SetActive(false);
                }
            }
        }
    }

 

웨이포인트 같은거 표시할때도 씀

'Unity' 카테고리의 다른 글

유니티 애드몹 2023  (0) 2023.09.24
유니티 APK 용량  (0) 2023.09.08
유니티 킬로그  (0) 2023.08.28
posted by 모카쨩

  • total
  • today
  • yesterday

Recent Post

저사양 유저용 블로그 진입