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

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

新規登録して質問してみよう
ただいま回答率
87.20%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

解決済

[Mac] Unity error CS0246の箇所がわからない

tuna_onigiri
tuna_onigiri

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

1回答

0評価

0クリップ

227閲覧

投稿2022/06/09 05:00

編集2022/06/10 17:15

・作っているもの
以前投稿した際の回答にある,ベストアンサーの方の「穴をマウスポインタに向かって伸ばす件について」の方法を自身のunity上でも行おうとしています.

・躓いているところ
スクリプト27行目13列にerror CS0246が発生し,コピペ,手入力,大文字小文字,
unityバージョンを変えてみてもエラーが解消されません.
localkeywordについても調べてみましたが,解決方法がわかりませんでした.

・スクリプト,環境など
▼script(以前の回答者様のscriptコピペです)

using System; using UnityEngine; using UnityEngine.Rendering; [RequireComponent(typeof(Renderer))] public class Hole : MonoBehaviour { private const int SpokeCount = 32; private const float SmoothingThreshold = 0.001f; private static readonly int CenterProperty = Shader.PropertyToID("_Center"); private static readonly int InverseMaxSpokeLengthProperty = Shader.PropertyToID("_InverseMaxSpokeLength"); private static readonly int SpokeLengthsProperty = Shader.PropertyToID("_SpokeLengths"); private static readonly int SmoothingFactorProperty = Shader.PropertyToID("_SmoothingFactor"); [SerializeField][Min(0.0f)] private float maxSpokeLength = 0.4f; // ローカル空間におけるスポークの最大長さ [SerializeField][Min(0.0f)] private float mouseAngleHalfWidth = 15.0f; // スポークの長さが半減するマウスポインタとスポークの角度差 public Vector2 center; // 穴の中心のローカルXY座標 [Min(0.0f)] public float smoothTime = 1.0f; // スポークが目標長さに伸縮するおよその時間 [Range(0.0f, 0.05f)] public float outlineSmoothness = 0.025f; // 穴の輪郭のなめらかさ public bool showDebugGizmos; // スポークとマウスポインタ位置をシーンビュー上に表示するか private readonly Vector2[] spokeDirections = new Vector2[SpokeCount]; private readonly float[] spokeLengths = new float[SpokeCount]; private readonly float[] spokeTargetLengths = new float[SpokeCount]; private readonly float[] spokeVelocities = new float[SpokeCount]; private LocalKeyword enableSmoothing; private Camera mainCamera; private Material material; private float spokeLengthFactor; private void Start() { this.material = this.GetComponent<Renderer>().material; this.enableSmoothing = new LocalKeyword(this.material.shader, "ENABLE_SMOOTHING"); this.mainCamera = Camera.main; for (var i = 0; i < SpokeCount; i++) { var spokeAngle = (2.0f * Mathf.PI * i) / SpokeCount; this.spokeDirections[i] = new Vector2(Mathf.Cos(spokeAngle), Mathf.Sin(spokeAngle)); } this.spokeLengthFactor = (Mathf.Log(0.5f) * Mathf.Rad2Deg * Mathf.Rad2Deg) / (this.mouseAngleHalfWidth * this.mouseAngleHalfWidth); } private void Update() { // まず、マウスポインタの位置をもとに各スポークの目標長さを決める // スポークの向きがマウスポインタの方角からずれるほど、スポークの // 長さを釣り鐘形に割り引くことでなめらかな外形を作る var mouseRay = this.mainCamera.ScreenPointToRay(Input.mousePosition); if (!new Plane(this.transform.forward, this.transform.position).Raycast(mouseRay, out var enter)) { return; } var mouseWorldPosition = mouseRay.GetPoint(enter); var mousePosition = (Vector2)this.transform.InverseTransformPoint(mouseWorldPosition); var relativeMousePosition = mousePosition - this.center; var mouseLength = Mathf.Min(relativeMousePosition.magnitude, this.maxSpokeLength); if (mouseLength > 0.0f) { var mouseDirection = relativeMousePosition.normalized; for (var i = 0; i < SpokeCount; i++) { var angle = Mathf.Acos(Mathf.Clamp(Vector2.Dot(mouseDirection, this.spokeDirections[i]), -1.0f, 1.0f)); this.spokeTargetLengths[i] = Mathf.Exp(this.spokeLengthFactor * angle * angle) * mouseLength; } } else { Array.Fill(this.spokeTargetLengths, 0.0f); } // 各スポークの長さを目標値に向かってなめらかに伸縮させる for (var i = 0; i < SpokeCount; i++) { this.spokeLengths[i] = Mathf.SmoothDamp( this.spokeLengths[i], this.spokeTargetLengths[i], ref this.spokeVelocities[i], this.smoothTime); if (this.showDebugGizmos) { Debug.DrawLine( this.transform.TransformPoint(this.center), this.transform.TransformPoint((this.spokeDirections[i] * this.spokeLengths[i]) + this.center), Color.green); } } // マウスポインタの位置に十字を表示する if (this.showDebugGizmos) { const float crossRadius = 8.0f; var mouseScreenPosition = this.mainCamera.WorldToScreenPoint(mouseWorldPosition); Debug.DrawLine( this.mainCamera.ScreenToWorldPoint(mouseScreenPosition + (Vector3.left * crossRadius)), this.mainCamera.ScreenToWorldPoint(mouseScreenPosition + (Vector3.right * crossRadius)), Color.yellow); Debug.DrawLine( this.mainCamera.ScreenToWorldPoint(mouseScreenPosition + (Vector3.down * crossRadius)), this.mainCamera.ScreenToWorldPoint(mouseScreenPosition + (Vector3.up * crossRadius)), Color.yellow); } // 穴の中心、スポークの長さ、その他マテリアルに必要なデータをセットする this.material.SetVector(CenterProperty, this.center); this.material.SetFloat(InverseMaxSpokeLengthProperty, 1.0f / this.maxSpokeLength); this.material.SetFloatArray(SpokeLengthsProperty, this.spokeLengths); this.material.SetKeyword(this.enableSmoothing, this.outlineSmoothness > SmoothingThreshold); this.material.SetFloat(SmoothingFactorProperty, 1.0f / this.outlineSmoothness); } private void OnDestroy() { Destroy(this.material); } }

上記scriptの27行目13列の

private LocalKeyWord enableSmoothing;

この部分です.

▼エラー文

Assets/Scripts/Hole.cs(27,13): error CS0246: The type or namespace name 'LocalKeyWord' could not be found (are you missing a using directive or an assembly reference?)

▼環境
Mac os 10.13.6
Unity 2019.4.13

windows10でUnity 2020.3.33で実行した際,始めは同様のエラーが出ていたのですが,Ctrl+Dで該当箇所を複製したり消去したりを繰り返していたら,windowsでは急にエラーがなくなりました…

▼以前の質問URL
リンク内容

わかりにくい点,失礼な点がありましたら申し訳ございません.
Macでも実行したい,windowsでもまたエラーが出たら対処できるようにしたいので,windowsで進める以外のご回答がありましたら,よろしくお願いいたします.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Zuishin

2022/06/09 05:12

> LocalKeyWord いかにも太郎とかジョンとか名無しさんとかいう名前ですが、このような名前のクラスを作っていないのでは? ベストアンサーは解決することを確かめてからにしましょう。
SurferOnWww

2022/06/09 05:44

OS が Mac だそうですが、それが一目でわかるようにタイトルに入れておいていただけるとありがたいです。
Zuishin

2022/06/09 06:33

> LocalKeyWord いかにも太郎とかジョンとか名無しさんとかいう名前ですが、このような名前のクラスを作っていないのでは? ベストアンサーは解決することを確かめてからにしましょう。
tuna_onigiri

2022/06/09 06:37

Zuishin様 ご回答くださりありがとうございます. クラスについて勉強不足な点があったため,もう一度勉強し直します.
tuna_onigiri

2022/06/09 06:39

SurferOnWww様 タイトルがわかりにくく申し訳ございませんでした. Mac,Unityということがわかるように,修正いたしました.

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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