คำถามติดแท็ก c#

C # เป็นภาษาการเขียนโปรแกรมที่มีการจัดการพิมพ์อย่างรุนแรงรวบรวมขยะที่สร้างโดย Microsoft ร่วมกับแพลตฟอร์ม. NET

2
ทำไม Unity layer masks จำเป็นต้องใช้การเลื่อนบิต?
ในที่สุดฉันก็พบว่าทำไมเลเยอร์มาสก์ของฉันสำหรับรหัสการชนกันของพื้นไม่ทำงาน ฉันกำลังใช้NameToLayer()เพื่อให้ได้เลเยอร์ที่ฉันต้องการ แต่เลเยอร์มาสก์ใช้การเลื่อนบิตเพื่อตั้งค่าเลเยอร์มาสก์จริง นี่เป็นสิ่งที่ผิดปกติอย่างยิ่งและฉันไม่เห็นเหตุผลว่าทำไมสิ่งนี้ถึงไม่ได้รับการจัดการในโค้ดด้านหลัง ทำไมเราต้องใช้รหัสเช่นนี้: mask = 1 << LayerMask.NameToLayer("Default"); เมื่อสิ่งนี้: mask = LayerMask.NameToLayer("Default"); ใช้งานได้ง่ายขึ้นและทำงานคล้ายกับส่วนที่เหลือของ Unity API หรือไม่
10 unity  c# 

4
ควรทำหมายเหตุประกอบวิธีวงจรชีวิตของ Unity ด้วยแอตทริบิวต์ UsedImplicitly หรือไม่
การทำหมายเหตุประกอบวิธีการ Unity lifecycle ด้วยแอUsedImplicitlyททริบิวนี้จะช่วยปรับปรุงความสามารถในการอ่านโค้ดของคุณหรือไม่? ตัวอย่างเช่น: public class Example : MonoBehaviour { [UsedImplicitly] private void Awake() { DoSomething(); } private void DoSomething() { // ... } } โพสต์บล็อกนี้ใน "โครงสร้างของคุณ Unity MonoBehaviours"แนะนำวิธีนี้เป็นแบบแผนที่มีประโยชน์ อธิบายวิธีการวงจรชีวิต Unity ใด ๆ (เริ่ม, ตื่น, อัพเดท, OnDestroy ฯลฯ ) วิธีการเหตุการณ์และฟังก์ชั่นอื่น ๆ ที่มีการเรียกใช้โดยนัย (หรือโดยอัตโนมัติ) ในรหัสของคุณด้วยแอตทริบิวต์ [UsedImplicitly] คุณลักษณะนี้แม้ว่าจะรวมอยู่ใน UnityEngine.dll แต่ถูกใช้โดย ReSharper …
9 unity  c# 

5
ทำไมฉันไม่สามารถใช้โอเปอเรเตอร์ '> =' กับ Vector3s ได้
ฉันพยายามที่จะได้รับรูปสี่เหลี่ยมผืนผ้าย้ายไปมาระหว่างสองตำแหน่งที่ผมพูดถึงและ_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 = …
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
ทำไมรหัส C # 6 ของฉันไม่รวบรวมใน Unity
เหตุใด Unity จึงไม่สามารถทำงานกับรหัสC # 6 ได้ มันทำให้ฉันมีข้อผิดพลาดคอมไพเลอร์เสมอ นี่คือตัวอย่างรหัสบางส่วน: using static System.Convert; using static System.Environment; $"€{punten}{NewLine}€{Money}{NewLine}€{KilledEnemies}{NewLine}€{bonus}{NewLine}€{total}"; ฉันใช้ Visual Studio เป็นเครื่องมือแก้ไขรหัสและสร้างโดยไม่มีข้อผิดพลาด ถ้าฉันกดเล่นด้วยความสามัคคีมันจะไม่สร้างขึ้น
9 unity  c# 

1
สร้าง Octree สำหรับการสร้างภูมิประเทศ
ก่อนหน้านี้ฉันได้ใช้การเดินขบวน cubes / tetrahedra เพื่อสร้าง IsoSurface มันใช้งานได้ ( YouTube ) แต่ประสิทธิภาพการทำงานแย่มากเพราะฉันไม่เคยได้รับการใช้งานระดับรายละเอียดที่แปรผันตามระยะทางในการดู ฉันตัดสินใจที่จะมีอีกไปและทำอย่างถูกต้องในเวลานี้ ฉันเริ่มต้นด้วยการสร้าง OctreeNode ที่ทำงานดังนี้เมื่อBuild()ถูกเรียก หากชิ้นเล็กเกินไปที่จะสร้างกลับมาทันที ทำงานถ้าพื้นผิวผ่านปริมาตรอันนี้ ถ้าเป็นเช่นนั้นตัดสินใจว่าเราต้องการยก 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 …
9 unity  c#  voxels  octree 

1
Dual Contouring - ค้นหาจุดคุณสมบัติโดยปรกติ
ฉันกำลังติดตามกวดวิชานี้เพื่อใช้ Dual Contouring 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, …
9 c#  geometry 

2
วิธีการตรวจหาเม้าส์สำหรับภาพ UI ใน Unity 5
ฉันมีภาพที่ฉันได้ตั้งค่าเพื่อเลื่อนไปมาและซูมเข้าและออกจาก ปัญหาคือการซูมสามารถทำได้จากทุกที่ในฉาก แต่ฉันต้องการแค่ซูมเมื่อเมาส์อยู่เหนือภาพ ฉันได้ลองใช้ OnMouseEnter, OnMouseOver, ทริกเกอร์เหตุการณ์, ทั้งสามตัวที่ไม่มี collider, กับ collider, กับ collider trigger, และทั้งหมดที่อยู่บนภาพเองและบนวัตถุเกมที่ว่างเปล่า อย่างไรก็ตามไม่มีของเหล่านั้นทำงานได้ ... ดังนั้นฉันจึงนิ่งงันอย่างแน่นอน ... ใครช่วยฉันออกจากที่นี่! นี่คือสคริปต์ของฉัน: 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 += …
9 unity  c#  gui  image  mouse 

3
ฉันจะจัดการกับการเปลี่ยนแปลงเวอร์ชันเมื่อบันทึกเนื้อหาได้อย่างไร
ตอนนี้ฉันทำงานเป็น RPG มาระยะหนึ่งแล้วฉันใช้เทคนิคการทำให้เป็นอันดับสองแบบที่ต่างกัน ศัตรูอาวุธรายการถูกบันทึกเป็น XML แผนที่และกิจกรรมจะได้รับการบันทึกเป็น "ไบนารีที่ควบคุม" (ทุกคลาสจะได้รับวิธีการบันทึก / โหลดและพวกเขาเลือกสิ่งที่พวกเขาต้องการที่จะบันทึก / โหลด) แต่ฉันเริ่มถามตัวเลือกของฉันสำหรับแผนที่และกิจกรรมต่างๆ ความกังวลของฉัน: ฉันได้สร้างโปรแกรมแก้ไขแผนที่ แต่ฉันก็ยังพลาดที่จะเปลี่ยนสิ่งเล็ก ๆ น้อย ๆ เพียงแค่เปิดไฟล์ เปลี่ยนระเบียบมากขึ้น บอกว่าฉันต้องการเพิ่มตัวแปรให้คลาสถ้าฉันไม่โหลด / บันทึกทุกแผนที่อีกครั้งมันจะแตกภายหลัง ข้อกังวลแรกนั้นยากที่จะแก้ไขโดยไม่ต้องเปลี่ยนเทคนิคของฉัน ฉันคิดว่าจะเปลี่ยนเป็น JSON แต่มันทำงานได้มากมาย ฉันคิดว่ามันดูน่าเกลียดด้วยแอตทริบิวต์ [DataContract] และ [DataMember] ทุกที่ ที่ทิ้งฉันด้วยความกังวลที่สองของฉันและฉันสงสัยว่าฉันจะจัดการกับมันได้อย่างไร คุณสร้างโปรแกรมขนาดเล็กที่วนรอบแผนที่ทั้งหมดและบันทึกใหม่ด้วยตัวแปรใหม่หรือไม่? เพราะฉันเริ่มได้แผนที่มาสองสามตอนแล้วและฉันก็ยังทำมันเอง มันทำให้ฉันคิดว่าสองครั้งทุกครั้งที่ฉันต้องการเปลี่ยนแปลงบางอย่างเนื่องจากมันสร้างงานพิเศษมากมาย

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); TurningNormalizer เพิ่งTime.deltaTimeเพิ่มขึ้นและturningSpeedเป็นค่าคงที่ที่กำหนดในตัวแก้ไข ปัญหาคือในขณะที่ตัวละครเปลี่ยนตามที่ควรจะเป็นส่วนใหญ่มันมีปัญหาเมื่อมันต้องเข้าใกล้ 180 องศา จากนั้นในบางครั้งก็กระวนกระวายใจและสะท้อนการหมุน: ในภาพที่วาดไม่ดีตัวละคร (ด้านขวา) จะเริ่มหันไปทางวงกลมทางด้านซ้าย แทนที่จะแค่หมุนไปทางซ้ายหรือขวามันเริ่มต้น "mirror dance" นี้: มันเริ่มหมุนไปทางด้านหน้าใหม่ จากนั้นมันก็หันไปที่มุมเดียวกันทันที แต่อยู่อีกด้านหนึ่งและหมุนไปเรื่อย ๆ มันเป็นการ“ ทำมิเรอร์” นาน ๆ จนกว่ามันจะมองไปที่เป้าหมาย นี่คือสิ่งที่มี quaternions, slerping / lerping หรืออย่างอื่น? แก้ไข 1: เห็นได้ชัดว่าปัญหาไม่ได้เกิดจากการหมุนของตัวเอง …

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 …

2
อินพุตฝั่งเซิร์ฟเวอร์
ขณะนี้ในเกมของฉันลูกค้าไม่มีอะไรนอกจากเป็น renderer เมื่อมีการเปลี่ยนแปลงสถานะอินพุตไคลเอนต์จะส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์และย้ายผู้เล่นราวกับว่ากำลังประมวลผลอินพุต แต่เซิร์ฟเวอร์มีตำแหน่งสุดท้ายที่บอกตำแหน่ง วิธีนี้ใช้งานได้ดีโดยทั่วไปยกเว้นปัญหาที่สำคัญอย่างหนึ่ง: การหลุดจากขอบ โดยทั่วไปหากผู้เล่นเดินไปที่ขอบพูดหน้าผาและหยุดทันทีก่อนที่จะออกจากขอบบางครั้งในวินาทีต่อมาเขาจะหายตัวไปจากขอบ นี่เป็นเพราะแพ็คเก็ต "ฉันหยุดกด W" ถูกส่งหลังจากเซิร์ฟเวอร์ประมวลผลข้อมูล นี่คือแผนภาพความล่าช้าเพื่อช่วยให้คุณเข้าใจสิ่งที่ฉันหมายถึง: http://i.imgur.com/Prr8K.png ฉันสามารถส่งแพ็กเก็ต "W Pressed" แต่ละเฟรมเพื่อให้เซิร์ฟเวอร์ประมวลผล แต่ดูเหมือนว่าจะเป็นวิธีแก้ปัญหาแบนด์วิดท์ที่มีราคาแพง ความช่วยเหลือใด ๆ ที่ชื่นชม!

1
Xbox thumbstick ที่ใช้ในการหมุนสไปรต์สูตรพื้นฐานทำให้มัน“ ติด” หรือรู้สึก“ เหนียว” ที่ระยะ 90 องศา! คุณจะหมุนอย่างราบรื่นได้อย่างไร?
ฉันใช้สูตรพื้นฐานมากในการคำนวณมุมของเทพดา (ยานอวกาศ) ที่ควรจะหันหน้าไปทางบนพื้นฐานของ thumbstick Xbox คอนโทรลเลอร์เช่นคุณใช้ thumbstick เพื่อหมุนเรือ ในวิธีการอัพเดทหลักของฉัน: 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แล้วใช้นี่เป็นอาร์กิวเมนต์มุมการหมุน (เป็นเรเดียน) สำหรับวาดรูปกระสวย ด้วยเหตุผลบางอย่างเมื่อฉันหมุน sprint มันให้ความรู้สึกเหนียวที่มุม 0, 90, 180 และ 270 องศา มันต้องการที่จะตั้งถิ่นฐานที่มุมเหล่านั้น มันไม่ให้การหมุนที่ราบรื่นและเป็นธรรมชาติเหมือนกับที่ฉันรู้สึกในเกมที่ใช้กลไกที่คล้ายคลึงกัน PS: ตัวควบคุม Xbox ของฉันไม่เป็นไร!
9 xna  c#  sprites  rotation  gamepad 

3
วิธีการแยกแผ่นสไปรต์
ฉันมีสไปรต์จำนวนมากที่มีรูปแบบไม่ดีซึ่งฉันต้องการย่อยสลายหรือแยกออกเป็นภาพขนาดเล็กจำนวนมากหนึ่งภาพสำหรับแต่ละสไปรต์ หากฉันสามารถทำได้ฉันสามารถใช้เครื่องมือตัวสร้างแพ็คเกอร์กำหนดพื้นผิวของฉันเพื่อสร้างเนื้อหาเกมด้วย เครื่องมือในการพัฒนาของฉันคือ XNA และ C # ที่กำหนดเป้าหมายเป็น Windows ฉันจะสลายภาพได้อย่างไร?

2
แก้ไขปัญหาเมื่อทำการย้ายเกม Unity ไปยัง Android
ดังนั้นฉันจึงย้ายเกมไปยัง Android เป็นครั้งแรกใน Unity3D และฉันก็เจอปัญหาเล็กน้อยระหว่างทาง ปัญหาปัจจุบันของฉันคือความละเอียดดูเหมือนจะไม่ถูกต้องมันตัดขอบของหน้าจอและการหยุดการเลื่อนของฉันสำหรับการเลื่อนหน้าจอซ้าย / ขวาไม่ได้อยู่ในตำแหน่งที่ถูกต้องอีกต่อไป หลังจากทำวิจัยเล็กน้อยผู้คนจำนวนมากบอกว่าคุณต้องทำให้เกมของคุณมีความละเอียดอิสระเพื่อให้สามารถทำงานบน Androids / Iphone / Ipad ทั้งหมดได้ มันเป็นเรื่องจริงเหรอ? ถ้าเป็นเช่นนั้นฉันจะทำยังไงต่อ ถ้าไม่ฉันจะแก้ไขปัญหาได้อย่างไรเมื่อฉันพอร์ตไปยังอุปกรณ์มือถือมันดูถูกต้อง? แก้ไข: ฉันยังไม่มีสิ่งที่ฉันต้องการจริงๆการแก้ปัญหายังทำงานไม่ถูกต้องแม้ว่าจะมีรหัสและลูกเล่นที่แสดงด้านล่าง ฉันต้องการวิธีในการปรับความละเอียดตามอุปกรณ์ ด้วยเหตุผลบางอย่างเมื่อฉันพยายามดึงความละเอียดของอุปกรณ์โดยใช้รหัสของ Mungoid มันจะคืนค่า 0x0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.