質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.69%
Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

Q&A

解決済

1回答

3572閲覧

Unity Shaderの調べても解決できないエラーを解消したい。

Lulucaf

総合スコア8

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

0グッド

0クリップ

投稿2021/04/25 14:41

BeforeColorAmountプロパティはfloatかrangeの値を持たない?的なことを言われるのですが公式のShaderリファレンスを見ても解決方法がわからず、「doesn't have a float or range property」で検索しても解決方法がわからなかったので質問させていただきました。

発生している問題・エラーメッセージ

Material 'Custom_Gradation (Instance)' with Shader 'Custom/Gradation' doesn't have a float or range property 'BeforeColorAmount' #0 GetStacktrace(int) #1 DebugStringToFile(DebugStringToFileData const&) #2 Material::GetFloat(ShaderLab::FastPropertyName) #3 Material_CUSTOM_GetFloatImpl(ScriptingBackendNativeObjectPtrOpaque*, int) #4 (Mono JIT Code) (wrapper managed-to-native) UnityEngine.Material:GetFloatImpl (UnityEngine.Material,int) #5 mono_jit_runtime_invoke #6 do_runtime_invoke #7 mono_runtime_invoke #8 scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool) #9 ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) #10 Coroutine::InvokeMoveNext(ScriptingExceptionPtr*) #11 Coroutine::Run(bool*) #12 DelayedCallManager::Update(int) #13 InitPlayerLoopCallbacks()::UpdateScriptRunDelayedDynamicFrameRateRegistrator::Forward() #14 ExecutePlayerLoop(NativePlayerLoopSystem*) #15 ExecutePlayerLoop(NativePlayerLoopSystem*) #16 PlayerLoop() #17 PlayerLoopController::UpdateScene(bool) #18 PlayerLoopController::UpdateSceneIfNeeded() #19 Application::TickTimer() #20 -[EditorApplication TickTimer] #21 __NSFireTimer #22 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ #23 __CFRunLoopDoTimer #24 __CFRunLoopDoTimers #25 __CFRunLoopRun #26 CFRunLoopRunSpecific #27 RunCurrentEventLoopInMode #28 ReceiveNextEventCommon #29 _BlockUntilNextEventMatchingListInModeWithFilter #30 _DPSNextEvent #31 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] #32 -[NSApplication run] #33 NSApplicationMain #34 EditorMain(int, char const**) #35 main #36 start #37 ???

該当のソースコード

C#

1Shader "Custom/Gradation" 2{ 3 Properties 4 { 5 _MainTex( "2D Texture", 2D ) = "white" {} 6 _BeforeColor ("Before Color", Color) = (0.8,0.8,0,1) 7 _AfterColor ("After Color", Color) = (1,0,0,1) 8 _BeforeColorAmount("Before Color Amount", Range(-1, 1)) = -1 9 } 10 SubShader 11 { 12 Tags 13 { 14 "RenderType"="Opaque" 15 "Queue" = "Transparent" 16 "LightMode" = "ForwardBase" 17 } 18 LOD 100 19 Pass 20 { 21 CGPROGRAM 22 #pragma vertex vert 23 #pragma fragment frag 24 #include "UnityCG.cginc" 25 #include "UnityLightingCommon.cginc" 26 27 fixed4 _BeforeColor; 28 fixed4 _AfterColor; 29 fixed _BeforeColorAmount; 30 31 struct appdata 32 { 33 half4 vertex : POSITION; 34 half2 uv : TEXCOORD0; 35 float3 normal : NORMAL; 36 }; 37 38 struct v2f 39 { 40 half4 vertex : SV_POSITION; 41 fixed4 color : COLOR0; 42 half2 uv : TEXCOORD0; 43 }; 44 45 v2f vert(appdata v) 46 { 47 v2f o; 48 o.vertex = UnityObjectToClipPos(v.vertex); 49 o.uv = v.uv; 50 half3 worldNormal = UnityObjectToWorldNormal(v.normal); 51 half nl = max(0, dot(worldNormal, _WorldSpaceLightPos0.xyz)); 52 o.color = nl * _LightColor0; 53 o.color.rgb += ShadeSH9(half4(worldNormal,1)); 54 55 return o; 56 } 57 58 fixed4 frag(v2f i) : COLOR 59 { 60 fixed amount = clamp(i.uv.y + _BeforeColorAmount, 0,1.0); 61 i.color = lerp(_AfterColor, _BeforeColor, amount) * i.color; 62 63 return i.color; 64 } 65 ENDCG 66 } 67 } 68} 69

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

guest

回答1

1

ベストアンサー

エラーメッセージによるとBeforeColorAmountという名称でプロパティを取得しているように見えますが、シェーダーコードの方では_BeforeColorAmountという名称になっているようです。
プロパティ取得部分のコードはどうなっていますでしょうか?もし頭に_が付いていないようでしたら、シェーダーコードに合わせて_BeforeColorAmountにしてみてはいかがでしょう。

投稿2021/04/25 19:54

Bongo

総合スコア10702

Lulucaf👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。

回答へのコメント

Lulucaf

2021/04/25 20:41

おっしゃる通りスクリプトの方に入力ミスがありました。お恥ずかしい限りです。 無事にエラー解消できました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.69%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

同じタグがついた質問を見る

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。