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

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

7
วิธีที่ดีที่สุดในการจัดโครงสร้าง / จัดการตัวละคร 'ในเกม' หลายร้อยตัว
ฉันสร้างเกม RTS ง่ายๆซึ่งมีตัวละครนับร้อยเช่น Crusader Kings 2 ใน Unity สำหรับการจัดเก็บตัวเลือกที่ง่ายที่สุดคือการใช้วัตถุที่เขียนได้ แต่นั่นไม่ใช่ทางออกที่ดีเพราะคุณไม่สามารถสร้างวัตถุใหม่ได้ในขณะทำงาน ดังนั้นฉันจึงสร้างคลาส C # ที่เรียกว่า "ตัวละคร" ซึ่งมีข้อมูลทั้งหมด ทุกอย่างทำงานได้ดี แต่เมื่อเกมจำลองมันจะสร้างตัวละครใหม่อย่างต่อเนื่องและฆ่าตัวละครบางตัว (เมื่อมีเหตุการณ์ในเกมเกิดขึ้น) ขณะที่เกมจำลองสถานการณ์อย่างต่อเนื่องมันจะสร้างตัวละครนับพัน ฉันได้เพิ่มการตรวจสอบง่าย ๆ เพื่อให้แน่ใจว่าตัวละครนั้นเป็น "Alive" ในขณะที่กำลังประมวลผลการทำงานของมัน ดังนั้นมันจึงช่วยประสิทธิภาพ แต่ฉันไม่สามารถลบ "ตัวละคร" ออกได้ถ้าเขา / เธอตายเพราะฉันต้องการข้อมูลของเขา / เธอในขณะที่สร้างแผนภูมิต้นไม้ รายการเป็นวิธีที่ดีที่สุดในการบันทึกข้อมูลสำหรับเกมของฉันหรือไม่? หรือมันจะทำให้เกิดปัญหาเมื่อมี 10,000 ตัวละครสร้างขึ้น? ทางออกหนึ่งที่เป็นไปได้คือการสร้างรายการอื่นเมื่อรายการถึงจำนวนที่กำหนดและย้ายตัวละครที่ตายแล้วทั้งหมดในพวกเขา
10 unity  c# 

1
การกำหนดความดังของ AudioClip
ฉันมีรหัสบางอย่างที่ใช้GetSpectrumDataจากแหล่งเสียงที่เล่นเพลงเพื่อสร้างเลย์เอาต์ระดับสำหรับผู้เล่นที่จะเล่น ฉันต้องการเพิ่มฟังก์ชั่นที่ผู้เล่นสามารถอัปโหลดเพลงของตัวเองและเล่นระดับที่สร้างขึ้นด้วยข้อมูลจากเพลงเหล่านี้ น่าเสียดายที่เมื่อเปรียบเทียบไฟล์เสียงต่าง ๆ ฉันพบสิ่งนี้: อย่างที่คุณเห็นแอมพลิจูดแตกต่างกันอย่างมากจากคลิปต่อคลิปจากนั้นสร้างระดับที่ไม่สำคัญให้เสร็จสมบูรณ์หรือแทบเป็นไปไม่ได้ ฉันต้องการหาวิธีในการกำหนด "เสียงดัง" นี้เพื่อให้ฉันสามารถลดหรือขยายด้วยตัวคูณหลังจากได้รับข้อมูลจากเพลง นอกจากนี้ยังมีวิธีการแยกข้อมูลนี้โดยไม่ต้องเล่นเพลงหรือไม่?
10 unity  c#  audio 

2
ตัวแปรเงื่อนไขในวัตถุสคริปต์
ในขณะที่ใช้ScriptableObjectsฉันจะทำให้ตัวแปรบางตัวมีเงื่อนไขได้อย่างไร รหัสตัวอย่าง: [System.Serializable] public class Test : ScriptableObject { public bool testbool; public string teststring; public int testint; } เป้าหมาย:เมื่อtestbool == trueนั้นteststringจะสามารถแก้ไขได้เมื่อtestbool == falseนั้นtestintจะสามารถแก้ไขได้ในขณะที่อีกอันจะเป็น " สีเทา "
10 unity  c# 

1
วิธีบันทึก Mesh จาก Interactive Cloth ตอนรันไทม์ใน Unity
ในช่วงเริ่มต้นของฉากฉันมี GameObject เรียกว่า 'ชีต' วางไว้เหนือ 'GameObject' บอล ' แผ่นมีส่วนประกอบผ้าแบบอินเทอร์แอคทีฟบนตัวมันและตัวสร้างผ้า ส่วนประกอบของตาข่ายสำหรับผ้าแบบอินเตอร์แอกทีฟคือเครื่องบินที่มีจุดยอดสูง เมื่อถึงรันไทม์แผ่นหยดลงบนลูกบอลและสร้างรูปร่างที่ฉันต้องการ ถ้าฉันปิดการใช้งานส่วนประกอบผ้าแบบอินเตอร์แอกทีฟ ณ จุดนี้ตาข่ายแผ่นจะยังคงตรงตามที่ฉันต้องการ แต่ฉันไม่สามารถดึงมันออกมาในรูปแบบพรีแฟบได้ ไม่มีใครรู้วิธีที่จะได้รับสำเนาของรูปร่างนั้นหรือไม่? ตัวอย่างเช่นโดยการอ่าน mesh จาก Interactive Cloth ตอนรันไทม์จากนั้นใช้สิ่งนั้นเพื่อเปลี่ยน mesh กลับมาตามที่ฉันต้องการโดยไม่ต้องใช้ส่วนประกอบ Interactive Cloth ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.
10 unity  c#  3d-meshes  cloth 

3
การป้องกันการรวมกันของ Rigidbody Jump Force & Magnitude เด้งใน Unity3D
ฉันกำลังสร้างเกมแข่งรถหินอ่อนที่ค่อนข้างง่ายใน Unity3D ลูกบอลเป็นวัตถุฟิสิกส์ 3 มิติที่เคลื่อนที่บนแกน X และ Y เท่านั้น มันมีความสามารถในการหมุนไปทางซ้ายและขวาและกระโดด สิ่งพื้นฐานที่น่ารักยกเว้นว่าฉันเคยเจอปัญหาการทำลายเกม: เมื่อล้มและกระทบพื้นความสูงของการตีกลับของลูกบอลสามารถรวมกับแรงกระโดดเพื่อสร้างการกระโดดสูงเป็นพิเศษ ซึ่งหมายความว่าเมื่อกดปุ่มตามเวลาที่กำหนดผู้เล่นสามารถทำให้ลูกบอลกระดอนสูงกว่าแบบทวีคูณได้ถึงความสูงที่ไม่ได้ตั้งใจ ฉันไม่สามารถออกแบบระดับได้อย่างถูกต้องจนกว่าข้อผิดพลาดนี้จะได้รับการแก้ไข ฉันได้แสดงตัวอย่างนี้: อย่างไรก็ตามการกระโดดไม่ใช่เรื่องง่ายเหมือนยิงลูกขึ้นไปด้านบน เพื่ออำนวยความสะดวกให้กับความซับซ้อนมากขึ้นในการออกแบบระดับฉันได้ตั้งโปรแกรมมุมกระโดดที่จะสัมพันธ์กับพื้นผิวที่ลูกบอลกลิ้งไปมา รูปที่ 3ในภาพประกอบนั้นเป็นวิธีที่เกมของฉันทำงานได้ดี ไม่ได้รูปที่ 4 นี่ทำให้การแก้ปัญหาการตีกลับ + กระโดดมีความท้าทายมากขึ้นเพราะฉันไม่สามารถวัดและกำหนดแรงหรือความเร็วที่แน่นอนบนแกน Y ได้ การทำเช่นนี้ส่งผลให้เกิดพฤติกรรมแปลก ๆ ซึ่งจะเห็นได้ชัดเจนมากขึ้นเมื่อลูกบอลเคลื่อนที่บนทางลาดชัน จนถึงตอนนี้ฉันสามารถเข้าใจวิธีการแก้ปัญหาการออกแบบอื่น ๆ ทั้งหมดในเกมนี้แล้วค้นหาวิธีการตั้งโปรแกรมพวกเขา แต่อันนี้ฉันติดอยู่ ฉันพยายามหลายวิธี แต่ก็ไม่ได้ผลเลย นี่คือสคริปต์ C # ที่ควบคุมการกระโดดของลูกบอล: using UnityEngine; using System.Collections; public class BallJumping : MonoBehaviour { public …
10 unity  c#  physics  jumping 

2
วิธีฉายโครงโฟมบนตาข่ายที่เปลี่ยนแปลงตลอดเวลา
ฉันพยายามที่จะสร้างน้ำและตอนนี้ฉันได้รับมันผ่านการสร้างคลื่นแบบไดนามิกบนตาข่าย แต่ตอนนี้ฉันต้องการทำให้เรือของฉันจัดการกับคลื่นเหล่านี้และทำให้เคลวินตื่นขึ้นมาบนจุดนี้ ความจริงก็คือฉันสร้างน้ำโดยใช้กระเบื้องที่แตกต่างกันซ้ำรูปแบบเดียวกันแบบไดนามิก ดังนั้นฉันจะสร้างสิ่งนี้บนตาข่าย (เครื่องบิน) ที่สร้างขึ้นแบบไดนามิกได้อย่างไร หากไม่มีการจัดการกระเบื้องอื่น ๆ (เครื่องบิน)
10 c#  unity  rendering 

4
วิธีทำให้ Line Renderer อยู่ในแนวราบ
ฉันสังเกตเห็นว่าในขณะที่ฉันเพิ่มจุดยอดเพิ่มเติมให้กับ Line Renderer Line การบิดตัวของเส้นและหยุดเป็นเส้นเรียบ .GIF ที่นี่: http://i.imgur.com/hRAhCXM.gif เส้นทุกเส้นอยู่ในระดับ z เดียวกันแม้ว่าฉันจะเอาวัสดุออกไปก็ตามเส้นก็ยังดูเหมือนว่าจะบิด ฉันไม่รู้ว่าทำไมมันถึงเป็นเช่นนี้หรือจะแก้ไขข้อเสนอแนะได้อย่างไร C #
10 c#  unity  2d  lines 

3
ฉันจะแปลพิกัดทรงกลมเป็นพิกัดคาร์ทีเซียนได้อย่างไร
มีใครบางคนชี้ให้ฉันในทิศทางที่ถูกต้องว่าจะประสบความสำเร็จได้อย่างไร? คณิตศาสตร์ / เรขาคณิต 3 มิติมักทำให้ฉันขว้าง ฉันกำลังมองหาบางสิ่งเช่นนี้ (นึกคิดใน C #): public Vector3 getCartesianFor(float elevation, float asimuth, float polar) { return ????; }

2
ความแตกต่างระหว่าง Update และ FixedUpdate ใน Unity คืออะไรและฉันควรจะสนใจอะไร?
ฉันบอกว่าจะใช้Update()สำหรับกราฟิกและFixedUpdate()ฟิสิกส์ FixedUpdate()แต่บางครั้งปัจจัยการผลิตของฉันจะไม่ลงทะเบียนเมื่อฉันใช้ มันใช้งานได้ดีถ้าฉันใช้Update()กับทุกสิ่ง ฉันควรจะรำคาญFixedUpdate()หรือฉันกำลังทำอะไรผิดหรือเปล่า?
10 unity  c#  game-loop 

1
การค้นหาความเร็วที่ถูกต้องสำหรับ AI เพื่อให้บรรลุเป้าหมาย
ฉันมีเรือที่เดินทางด้วยความเร็วสูงสุดmaxSpeedและสามารถเปลี่ยนrotationSpeedองศาต่อวินาที เรือเคลื่อนที่ไปในทิศทางที่หันหน้าไปทางเสมอซึ่งหมายความว่ายิ่งแล่นเรือเร็วเท่าไหร่รัศมีการเลี้ยวยิ่งใหญ่ขึ้นเท่านั้น ฉันรู้ตำแหน่งของฉันการหมุนและตำแหน่งของเป้าหมาย สิ่งที่ฉันอยากรู้คือเป้าหมายอยู่ในรัศมีวงเลี้ยวของฉันด้วยความเร็วนี้หรือดีกว่าความเร็วสูงสุดที่ฉันสามารถเคลื่อนที่ได้คืออะไรเพื่อที่จะเลี้ยวไปยังเป้าหมายโดยไม่วนรอบอย่างต่อเนื่อง มีวิธีที่มีประสิทธิภาพ (ish) การทำเช่นนี้? นี่คือสิ่งที่ฉันคิดอยู่จนถึงตอนนี้: เพราะฉันรู้ว่าฉันเดินทางไปไกลแค่ไหนต่อขั้นตอนและเท่าไหร่ที่ฉันหมุนไปตามขั้นตอนเท่าไหร่ฉันจึงสามารถรู้ได้ว่าฉันจะอยู่ที่ไหนในสองเฟรม ตำแหน่งปัจจุบันของฉันคือ p1 ตำแหน่งถัดไปของฉันคือ p2 จากนั้น p3 ฉันสามารถหาเส้นแบ่งครึ่งตั้งฉากของ (p1, p2) และ (p2, p3) จุดตัดของพวกเขาจะให้ศูนย์กลางของวงกลมแก่ฉัน ฉันสามารถทดสอบว่าเป้าหมายอยู่ในวงกลมนั้นหรือไม่ ฉันไม่แน่ใจว่าสิ่งนี้จะทำงานในแบบ 3 มิติ (ฉันไม่แน่ใจว่าจะคำนวณทรงกลมด้วยอินพุตของฉัน) โซลูชันนี้ไม่ได้ช่วยอะไรมากนักในการค้นหาความเร็วที่เหมาะสมสำหรับการเดินทางฉันจะต้องลองสองสามครั้งด้วยความเร็วที่แตกต่างกันเพื่อค้นหาความเร็วที่เหมาะสม ทุกคนสามารถปลดปล่อยแสงให้กับทางออกที่ดีกว่าได้หรือไม่?

3
ฉันจะทำให้ความละเอียดของเกม 2D เป็นอิสระได้อย่างไร
ฉันกำลังเล่นเกม 2D อย่างง่าย ฉันทำรุ่นโทรศัพท์มือถือเสร็จแล้ว อย่างไรก็ตามเจ้านายของฉันต้องการให้เกมทำงานบน RT ของเขา ฉันกำลังทำ "การแปลง" แต่ปุ่มของฉันอยู่ในตำแหน่งที่ไม่ถูกต้องเพราะฉันกำหนดขนาดหน้าจออย่างหนักเช่นนี้: texture = game.Content.Load<Texture2D>("StartScreen"); mainFrame = new Rectangle(0, 0, game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height); // button definitions startbrect = new Rectangle(300, 258, 88, 88); startbtext = game.Content.Load<Texture2D>("bplay"); ในตัวอย่างmainframeนี้ใช้ได้ แต่startbrectไม่ใช่เพราะฉันกำหนดขนาดเพื่อให้ตรงกับหน้าจอของ Windows Phone ฉันจะจัดการการออกแบบที่ตอบสนองได้อย่างไรเมื่อหน้าจอโทรศัพท์ Windows 8 ทุกรุ่นแตกต่างกันอย่างไร มีสูตรหรือมาโครในการคำนวณในแต่ละครั้งที่มีขนาดที่เหมาะสมหรือไม่
10 c#  2d  resolution 

2
อัลกอริทึมสำหรับการเพิ่มประสิทธิภาพของเกมจับคู่กับคิวที่รู้จัก
ฉันพยายามเขียน Solver ใน C # .NET สำหรับเกมที่รู้จักในชื่อ Flowerz สำหรับการอ้างอิงของคุณคุณสามารถเล่นได้บน MSN ที่นี่: http://zone.msn.com/gameplayer/gameplayer.aspx?game=flowerz ฉันกำลังเขียนเพื่อความสนุกไม่ใช่เพื่องานประเภทใดหรืองานใด ๆ ที่เกี่ยวข้อง ด้วยเหตุนี้ข้อ จำกัด เพียงอย่างเดียวคือคอมพิวเตอร์ของฉัน (intel i7 core พร้อม RAM 8GB) ไม่จำเป็นต้องวิ่งไปที่อื่นเท่าที่ฉันกังวล ในระยะสั้นกฎของมันเป็นดังนี้: มีคิวที่เต็มไปด้วยดอกไม้สี ความยาวของมันคืออะไรก็ได้ คิวไม่สามารถได้รับผลกระทบ คิวจะถูกสร้างขึ้นเมื่อเริ่มต้นของระดับ ดอกไม้มีหนึ่งหรือสองสี หากมีสองสีแสดงว่ามีสีด้านนอกและสีภายใน ในกรณีที่มีสองสีสีด้านนอกจะใช้สำหรับการจับคู่ หากมีการจับคู่แล้วสีด้านนอกจะหายไปและดอกไม้เป็นดอกไม้สีเดียวที่มีสีเดียวกับดอกไม้ด้านใน เป้าหมายของเกมคือการสร้างแมตช์ที่มีสามสี (หรือมากกว่า) ที่มีสีเดียวกัน เมื่อดอกไม้ที่มีสีเดียวเป็นส่วนหนึ่งของการแข่งขันมันจะถูกลบออกจากสนามเด็กเล่นสร้างพื้นที่ว่าง คุณสามารถจับคู่ดอกไม้สีเดียวกับสีด้านนอกของดอกไม้สองสี ในกรณีนี้ดอกไม้สีเดียวจะหายไปสีด้านนอกของดอกไม้สองสีจะหายไปและสีภายในยังคงอยู่ คุณชนะรอบเมื่อคิวว่างเปล่าและมีพื้นที่ว่างอย่างน้อยหนึ่งที่เหลือ การแข่งขันแบบเรียงซ้อนเป็นไปได้ น้ำตกคือเมื่อดอกไม้ด้านนอกสามดอก (หรือมากกว่า) หายไปและเมื่อสีภายในของมันรวมกันเป็นโซ่อีก 3 ดอก (หรือมากกว่านั้น) สนามเด็กเล่นอยู่เสมอ 7x7 …
10 c#  algorithm  ai  puzzle 

1
C # / XNA รับตำแหน่งเมาส์ของฮาร์ดแวร์
ฉันใช้ C # และพยายามรับตำแหน่งเมาส์ฮาร์ดแวร์ สิ่งแรกที่ฉันลองคือฟังก์ชั่น XNA ง่าย ๆ ที่ใช้งานง่าย Vector2 position = new Vector2(Mouse.GetState().X, Mouse.GetState().Y); หลังจากนั้นฉันก็ทำการวาดเมาส์เช่นกันและเปรียบเทียบกับเมาส์ฮาร์ดแวร์ของ windows แล้วเมาส์ใหม่ที่มีพิกัด xna ที่ระบุนี้คือ "หยุดหย่อน" โดยที่ฉันหมายความว่ามันอยู่เบื้องหลังโดยไม่กี่เฟรม ตัวอย่างเช่นหากเกมทำงานที่ 600 fps คำสาปมันจะตอบสนอง แต่ที่ความล่าช้าของเมาส์ซอฟต์แวร์ 60 fps ไม่เป็นที่ยอมรับอีกต่อไป ดังนั้นฉันจึงลองใช้สิ่งที่ฉันคิดว่าเป็นเมาส์ฮาร์ดแวร์ [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool GetCursorPos(out POINT lpPoint); แต่ผลลัพธ์ก็เหมือนกันทุกประการ ฉันยังลองรับเคอร์เซอร์ของ Windows และนั่นก็เป็นจุดสิ้นสุดเช่นกัน - ใช้งานได้ แต่มีความล่าช้าเท่าเดิม ล้อเล่นกับฟังก์ชัน xna: …

6
Visual Studio 2012 และการพัฒนาเกม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา เอาล่ะฉันคิดว่ามันเป็นคำถามง่าย ๆ แต่ฉันมีปัญหาในการหาคำตอบ ฉันได้อ่านแล้วว่า XNA จะไม่อยู่ใน Visual Studio 2012 ฉันเพิ่งเรียนรู้การใช้ XNA แต่เนื่องจากฉันต้องการทำงานกับเกมฉันอยากรู้ว่ามีวิธีพัฒนาเกมโดยใช้ C # ใน Visual Studio 2012 หรือไม่ หรือถ้าฉันควรเรียนรู้ทุกอย่างอีกครั้งโดยใช้ C ++ และ Direct3D C # เป็นภาษาที่ฉันชอบมากดังนั้นหากไม่มีวิธีที่จะทำใน C # แต่สิ่งที่ค่อนข้างง่ายต่อการใช้ Java สำหรับการพัฒนาเกมฉันก็สนใจเช่นกัน ขอบคุณมาก!
10 xna  c#  3d  directx  .net 

1
พื้นที่หน้าจอสู่อวกาศโลก
ฉันกำลังเขียนเกม 2D ที่โลกของเกมของฉันมีแกนxวิ่งจากซ้ายไปขวาแกนyวิ่งจากบนลงล่างและแกนzออกจากหน้าจอ: ในขณะที่โลกของเกมของฉันอยู่บนลงล่างเกมจะแสดงผลในลักษณะเอียงเล็กน้อย: ฉันกำลังทำงานในการฉายจากอวกาศโลกไปยังพื้นที่หน้าจอและในทางกลับกัน ฉันมีงานเดิมดังนี้: var viewport = new Viewport(0, 0, this.ScreenWidth, this.ScreenHeight); var screenPoint = viewport.Project(worldPoint.NegateY(), this.ProjectionMatrix, this.ViewMatrix, this.WorldMatrix); NegateY()วิธีขยายไม่ตรงกับสิ่งที่ดูเหมือนตั้งแต่ XNA ของYแกนวิ่งล่างขึ้นบนแทนบนลงล่าง ภาพหน้าจอด้านบนแสดงว่าสิ่งนี้ทำงานได้ทั้งหมด โดยทั่วไปฉันมีหลายจุดในพื้นที่ 3 มิติที่ฉันแสดงในพื้นที่หน้าจอ ฉันสามารถแก้ไขคุณสมบัติกล้องแบบเรียลไทม์และดูว่ามันเคลื่อนไหวไปยังตำแหน่งใหม่ได้อย่างไร เห็นได้ชัดว่าเกมจริงของฉันจะใช้สไปรท์แทนที่จะเป็นจุดและตำแหน่งกล้องจะได้รับการแก้ไข แต่ฉันแค่พยายามทำให้คณิตศาสตร์ทั้งหมดเข้าที่ก่อนที่จะถึงสิ่งนั้น ตอนนี้ฉันพยายามที่จะแปลงกลับในทางอื่น นั่นคือกำหนดxและyในพื้นที่หน้าจอด้านบนกำหนดจุดที่สอดคล้องกันในพื้นที่โลก ดังนั้นถ้าฉันชี้เคอร์เซอร์ไปที่มุมล่างซ้ายของรูปสี่เหลี่ยมคางหมูสีเขียวฉันต้องการอ่านพื้นที่โลก (0, 480) Zประสานงานที่ไม่เกี่ยวข้อง หรือค่อนข้างพิกัดzจะเป็นศูนย์เสมอเมื่อทำแผนที่กลับสู่อวกาศโลก เป็นหลักฉันต้องการใช้ลายเซ็นวิธีการนี้: public Vector2 ScreenPointToWorld(Vector2 point) ฉันพยายามหลายสิ่งหลายอย่างเพื่อให้การทำงานนี้ แต่ฉันไม่มีโชค ความคิดล่าสุดของฉันคือฉันต้องโทรหาViewport.Unprojectสองครั้งด้วยค่าที่ใกล้เคียง / ไกลzคำนวณผลลัพธ์Ray, ทำให้เป็นมาตรฐานแล้วคำนวณจุดตัดของเครื่องหมายRayด้วยPlaneที่แสดงถึงระดับพื้นดินของโลก อย่างไรก็ตามฉันติดอยู่ในขั้นตอนสุดท้ายและไม่แน่ใจว่าฉันทำสิ่งที่ซับซ้อนเกินไปหรือไม่ …
10 xna  c#  matrix  projection  screen 

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