タグ付けされた質問 「c#」

C#は、Microsoftが.NETプラットフォームと組み合わせて作成した、マルチパラダイムで管理され、強く型付けされ、ガベージコレクションされたプログラミング言語です。

2
Unityレイヤーマスクでビットシフトを使用する必要があるのはなぜですか?
ようやく、地上衝突コードのレイヤーマスクが機能しない理由がわかりました。NameToLayer()必要なレイヤーを取得するために使用していましたが、レイヤーマスクはビットシフトを使用して実際にレイヤーマスク値を設定します。これは非常に珍しく、コードビハインドで処理されない理由はありません。なぜ次のようなコードを使用する必要があるのですか。 mask = 1 << LayerMask.NameToLayer("Default"); このような場合: mask = LayerMask.NameToLayer("Default"); より直感的に理解でき、Unity APIの他の部分と同様に機能しますか?
10 unity  c# 

4
Unityライフサイクルメソッドは、UsedImplicitly属性で注釈を付ける必要がありますか?
UsedImplicitly属性を使用してUnityライフサイクルメソッドに注釈を付けると、コードが読みやすくなりますか? 例えば: public class Example : MonoBehaviour { [UsedImplicitly] private void Awake() { DoSomething(); } private void DoSomething() { // ... } } 「Unity MonoBehavioursの構造化」に関するこのブログ投稿は、このアプローチを有用な慣例として示唆しています。 Unityライフサイクルメソッド(Start、Awake、Update、OnDestroyなど)、イベントメソッド、および[UsedImplicitly]属性を使用してコード内で暗黙的(または自動的)に呼び出されるその他の関数に注釈を付けます。この属性はUnityEngine.dllに含まれていますが、参照されていないように見えるメソッドのコードクリーンアップの提案を無効にするためにReSharperによって使用されます。また、Unityやコードベースの初心者がコードを読みやすくするのにも役立ちます。特に、インスペクターを介して参照されるイベントの場合に役立ちます。 (注:ReSharperが一見参照されていないように見えるUnityライフサイクルメソッドのコードクリーンアップの提案を示しているとは思わないので、古くなったアドバイスかもしれません。) Unityの初心者には役立つかもしれないという上記の投稿に同意します。私はまた、これらのラベル付けすることが有用であると思うユニティライフサイクル機能頻繁にとして使用されていないAwake、StartとUpdate。しかし、これが実際に「クリーンなコード」のための良い慣習なのか、それとも読みやすさを低下させるのは単なるノイズなのかと思います。
9 unity  c# 

5
Vector3で演算子 '> ='を使用できないのはなぜですか?
私は私がように参照する2つの位置の間を移動するための四角形を取得しようとしている_positionAとします_positionB。どちらもタイプVector3です。長方形はうまく動きます。ただし、到達_positionBしても、本来のように反対方向に移動することはありません。 コードをもう一度見てみました。オブジェクトが移動ifすると、コード内のステートメントは、rectsの位置がに等しいフレームを逃したという結論に達しました_positionB。rectsの位置がより大きいか等しい 場合は、コードを変更して方向を逆にすることにしました_positionB。私のコードは長すぎないので、以下に表示します。 using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

4
UnityでC#6コードがコンパイルされないのはなぜですか?
UnityがC#6コードで動作しないのはなぜですか?常にコンパイラエラーが発生します。以下にいくつかのコード例を示します。 using static System.Convert; using static System.Environment; $"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}"; コードエディターとしてVisual Studioを使用し、エラーなしでビルドしています。Unityで再生を押してもビルドされません。
9 unity  c# 

1
地形生成のためのOctreeの構築
以前にマーチングキューブ/四面体を実装して、IsoSurfaceをレンダリングしました。これは機能しましたが(YouTube)、ビューの距離に基づいて可変の詳細レベルを実装する(または古い、遠いチャンクを削除する)ことを回避できなかったため、パフォーマンスは悲惨でした。 今回はもう一度やってみることにしました。Build()が呼び出されたときに次のように機能するOctreeNodeを作成することから始めました。 チャンクが小さすぎてビルドできない場合は、すぐに戻ります。 サーフェスがこのチャンクのボリュームを通過する場合は、ワークアウトしてください。 その場合は、LODを上げるかどうかを決定します(カメラが近いため)。 その場合、8つの子を生成し、同じプロセスを呼び出します そうでない場合は、現在のノードの寸法を使用してメッシュを構築します いくつかのPseudoCode: OctNode Build() { if(this.ChunkSize < minChunkSize) { return null; } densityRange = densitySource¹.GetDensityRange(this.bounds); if(densityRange.min < surface < densityRange.max) { if(loDProvider.DesiredLod(bounds)² > currentLoD) { for(i 1 to 8) { if(children[i] == null) { children[i] = new OctNode(...) } children[i] = children[i].Build(); } } …
9 unity  c#  voxels  octree 

1
デュアルコンターリング-特徴点の検索、法線オフ
このチュートリアルに従って、デュアルコンタリングを実装してい ますhttp://www.sandboxie.com/misc/isosurf/isosurfaces.html 私のデータソースはグリッド16x16x16です。私はこのグリッドを下から上、左から右、近くから遠くまで行き来しています。 グリッドのインデックスごとに、キューブ構造を作成します。 public Cube(int x, int y, int z, Func<int, int, int, IsoData> d, float isoLevel) { this.pos = new Vector3(x,y,z); //only create vertices need for edges Vector3[] v = new Vector3[4]; v[0] = new Vector3 (x + 1, y + 1, z); v[1] = new Vector3 (x …
9 c#  geometry 

2
Unity 5でUI画像のマウスオーバーを検出する方法は?
移動してズームインおよびズームアウトするように設定した画像があります。問題は、ズームはシーンのどこからでも実行できることですが、マウスを画像の上に置いたときにのみズームしたいのです。OnMouseEnter、OnMouseOver、イベントトリガー、コライダーなし、コライダー付き、トリガーコライダー付きの3つすべて、および画像自体と空のゲームオブジェクトでそれらすべてを使用しようとしました。しかし、それらのどれもうまくいっていません...だから私は絶対に困惑しています...誰かがここで助けてくれませんか! これが私のスクリプトです: private float zoom; public float zoomSpeed; public Image map; public float zoomMin; public float zoomMax; void Update () { zoom = (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomSpeed); map.transform.localScale += new Vector3(map.transform.localScale.x * zoom, map.transform.localScale.y * zoom, 0); Vector3 scale = map.transform.localScale; scale = new Vector3(Mathf.Clamp(map.transform.localScale.x, zoomMin, zoomMax), Mathf.Clamp(map.transform.localScale.y, …
9 unity  c#  gui  image  mouse 

3
アセットを保存するときにバージョンの変更をどのように処理できますか?
私はしばらくRPGに取り組んでおり、2つの異なるシリアル化手法を使用しています。 敵、武器、アイテムはXMLとして保存されます。 マップとイベントは「制御されたバイナリ」として保存されます(すべてのクラスが保存/ロードメソッドを取得し、保存/ロードするものを決定します)。 しかし、私はマップとイベントの選択に疑問を持ち始めました。私の懸念: 私はマップエディタを作成しましたが、ファイルを開くだけでは小さなことを変更できません。 混乱が大幅に変化します。変数をクラスに追加したいとします。すべてのマップを再度ロード/保存しないと、後で壊れます。 最初の懸念は、私のテクニックを変更せずに回避することは困難です。JSONへの変更を考えましたが、大変な作業です。また、[DataContract]属性と[DataMember]属性がいたるところにあると、見苦しく見えます。 それは私の第二の懸念を私に残し、私はそれをどのように処理できるのでしょうか?すべてのマップをループし、新しい変数でそれらを再保存する小さなプログラムを作成しますか?私は今、いくつかのマップを取得し始めており、それでも手動で取得しています。多くの追加作業が発生するため、変更を加えたいときは毎回2度考えさせられます。

3
Slerping回転ミラー
次のコードを使用して、ターゲットを監視するためにゲームキャラクターを回転させます。 transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f) startQuaternionは、新しいターゲットが指定されたときのキャラクターの現在の回転です。 lookQuaternionは、キャラクターが見るべき方向であり、次のように設定されています。 destinationVector = currentWaypoint.transform.position - transform.position; lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up); turnNormalizerはTime.deltaTimeインクリメントされるだけturningSpeedで、エディターで指定される静的な値です。 問題は、ほとんどの場合、キャラクターが正常に回転する一方で、180度に近づかなければならないときに問題が発生することです。次に、時々それがジッターして回転をミラーリングします: この不十分に描かれた画像では、キャラクター(右側)が左側の円に向かって回転し始めます。左または右に回転するだけでなく、この「ミラーダンス」が開始されます。 新しいフェーシングに向かって回転し始めます その後、突然同じ角度にスナップしますが、反対側で回転し続けます ターゲットを見るまで、この「ミラーリング」を長時間実行します。これは、四元数、slerping / lerpingなどの問題ですか? EDIT1: どうやら、問題は回転自体から発生するのではありません。より可能性の高い問題は、キャラクターが回転しているときに面に向かって移動することです。キャラクターが動くことを許可されているとき、向きとターゲットの間の角度を制限することで、ジッター/ミラーリング回転が減少し、時には解消されます。 もちろん、これはさらに多くの疑問を投げかけますが、なぜ問題なくキャラクターが同時に移動および回転できないのですか?運動に使用されるコード: transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);

2
Rectangle.Intersects()から衝突の詳細を取得する
私はある時点で、次のようなものでボールとパドルの衝突を検出するブレイクアウトゲームを持っています。 // Ball class rectangle.Intersects(paddle.Rectangle); 現在との衝突の正確な座標、またはそれに関する詳細を取得する方法はありますXNA APIか? 衝突の瞬間に各オブジェクトの正確な座標を比較するなど、いくつかの基本的な計算を行うことを考えました。次のようになります。 // Ball class if((rectangle.X - paddle.Rectangle.X) < (paddle.Rectangle.Width / 2)) // Collision happened on the left side else // Collision happened on the right side しかし、これが正しい方法かどうかはわかりません。 皆さんは私がそれを達成するために使用しなければならないかもしれないエンジンについて何かヒントがありますか?または、この方法を使用した優れたコーディング慣行ですか?

1
gluLookAtはどのように機能しますか?
私の理解から、 gluLookAt( eye_x, eye_y, eye_z, center_x, center_y, center_z, up_x, up_y, up_z ); 以下と同等です。 glRotatef(B, 0.0, 0.0, 1.0); glRotatef(A, wx, wy, wz); glTranslatef(-eye_x, -eye_y, -eye_z); しかし、ModelViewマトリックスを出力すると、への呼び出しがglTranslatef()正しく機能していないようです。コードスニペットは次のとおりです。 #include <stdlib.h> #include <stdio.h> #include <GL/glut.h> #include <iomanip> #include <iostream> #include <string> using namespace std; static const int Rx = 0; static const int Ry …

2
サーバー側入力
現在私のゲームでは、クライアントはレンダラーにすぎません。入力状態が変更されると、クライアントはサーバーにパケットを送信し、プレーヤーが入力を処理しているかのようにプレーヤーを移動しますが、サーバーは最終的な判断を下します。 これは、1つの大きな問題を除いて、通常は非常にうまく機能します。基本的に、プレーヤーが崖に向かってエッジに向かって歩いていて、エッジから出る直前に停止する場合、場合によっては1秒後に、エッジからテレポートされます。これは、サーバーが情報を処理した後で、「Wを押すのをやめた」パケットが送信されるためです。 ここに私が何を意味するかを理解するのに役立つラグダイアグラムがあります:http : //i.imgur.com/Prr8K.png サーバーが処理するフレームごとに "W Pressed"パケットを送信するだけでもかまいませんが、これは帯域幅のコストがかかるソリューションのようです。 どんな助けでもありがたいです!

3
スプライトシートを分解する方法
フォーマットが不十分で、分解したり、スプライトごとに1つずつ多くの小さな画像に分割したりしたいスプライトシートがたくさんあります。それができれば、カスタムテクスチャパッカーツールを使用してゲームアセットを構築できます。 私の開発ツールは、Windowsを対象としたXNAおよびC#です。画像を分解するにはどうすればよいですか?

1
スプライトの回転に使用されるXboxサムスティック。基本的な数式により、90度間隔で「スティック」または「スティッキー」に感じます。どのようにスムーズな回転を得るのですか?
非常に基本的な式を使用して、Xboxコントローラーのサムスティックに基づいてスプライト(宇宙船など)が向いている角度を計算します。つまり、サムスティックを使用して船を回転させます。 私の主な更新方法では: shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y); 私のメインの描画方法では: spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1); ご覧のとおり、非常にシンプルなので、現在のラジアンをサムスティックから取り出してフロートに格納します shuttleAngleこれをシャトルを描画するための回転角度(ラジアン)引数として使用します。 どういうわけか、スプリントを回転させると、0、90、180、270度の角度でベタつく感じがします。それらの角度で解決したいと考えています。同様のメカニズムを使用するゲームで感じるようなスムーズで自然な回転は得られません。PS:私のXboxコントローラーは大丈夫です!
9 xna  c#  sprites  rotation  gamepad 

2
UnityゲームをAndroidに移植する際の解決の問題
それで、Unity3Dで初めてゲームをAndroidに移植します。途中でいくつかの問題に遭遇しました。私の現在の問題は、解像度が正しくないようで、画面の端が途切れ、画面を左/右にスクロールするためのスクロールストップが正しい場所にないということです。 少し調査した後、多くの人が、すべてのAndroid / Iphone / Ipadで実行できるようにするには、ゲームを解像度に依存しないようにする必要があると言います。これは本当ですか?もしそうなら、私はそれをどうやってやりますか?そうでない場合、どうすれば解像度を修正できるので、モバイルデバイスに移植したときに正しく表示されますか? 編集:私はまだ本当に必要なものを持っていません、解像度はまだ以下にリストされているコードとトリックを使っても正しく機能していません。デバイスに基づいて解像度を調整する方法が必要です。何らかの理由でMungoidのコードを使用してデバイスの解像度を取得しようとすると、0x0が返されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.