ก่อนหน้านั้น ผมสร้าง คลาสขึ้นมาคลาสหนึ่ง
ชื่อว่า
public class Myclass
{
public People Name ;
private Routine WhatDo;
public bool now
{
get{ return WhatDo.GetBool ("IsDoing");}
set{ WhatDo.SetBool("IsDoing",value);}
}
public void Update()
{
Name = Object.transform.name;
}
}
จากนั้นสร้างคลาสเรียกใช้งาน
public class Manager
{
public Myclass me ;
public Myclass you;
public List<Myclass > IsList =new List<Myclass > ();
public void WhatAreYouDoning(string do)
{
foreach(Myclass item in IsList)
{
if(item.Name==do)
{
me= item;
you= item;
me.now=true;
you.now=true;
you.now=false;
}
}
}
ข้างบนเป็นตัวอย่างโค้ดสมมุตินะครับ โค้ดจริงๆ มันเยอะกว่านั้น
สมมุติ
ตัวแปร IsList มีค่าอยู่ 5 ตัว (ในโค้ดข้างบนผมยังไม่ใส่ แต่คิดว่าผมใส่ไปแล้วกำหนดอะไรเรียบร้อยแล้วกัน)
โดย ออบเจ็ต 5 ตัวจะแสดงรูปกิจวัตรแตกต่างกันออกไป โดยเก็บรูปที่จะแสดงในตัวแปร WhatDo
แล้วถ้า Myclass.now เป็นจริง จะแสดงรูปกิจวัตร เป็นเท็จ ปิดรูป
แต่ปัญหามันอยู่ตรงที่
me.now=true มันจะแสดงรูปกิจวัตร
you.now=true มันก็จะแสดงรูปกิจวัตร เหมือน me เพราะ อ้างอิงจากตัวแปรตัวเดียวกัน แต่มันไม่มีรูปซ้อนทับ
you.now=false มันก็ปิดรูป แต่มันดันไม่มีรูปกิจวัตรของ me บนจอ
ผมไม่เข้าใจง่ะครับ ทำไม มันไม่สร้างรูปภาพซ้อนทับกัน ทั้งๆที่ ตัวแปร me และ you คนล่ะตัวกัน
ถ้าเป็น
me.now=true
me.now=false
มันจะ เปิดรูปและปิดรูป โดยแสดงรูปใดรูปหนึ่ง
แต่ความเข้าใจของผมว่า
ถ้า สร้างตัวแปร 2 ตัว แต่เป็นตัวแปรชนิดเดียวกัน
มันน่าจะทำงานแยกกัน
me.now=true
you.now=false
ตัวแปร me ยังเปิดรูปอยู่ ก็แสดงรูปกิจวัตรต่อไป
แต่พอ you ปิดรูป มันดันไป ปิดรูปกิจวัตรของ me ด้วยซะงั้น
มันเป็นเพราะอะไรครับ
C# เกี่ยวกับเรื่องตัวแปร reference type กับตัวแปร value type ครับ
ชื่อว่า
public class Myclass
{
public People Name ;
private Routine WhatDo;
public bool now
{
get{ return WhatDo.GetBool ("IsDoing");}
set{ WhatDo.SetBool("IsDoing",value);}
}
public void Update()
{
Name = Object.transform.name;
}
}
จากนั้นสร้างคลาสเรียกใช้งาน
public class Manager
{
public Myclass me ;
public Myclass you;
public List<Myclass > IsList =new List<Myclass > ();
public void WhatAreYouDoning(string do)
{
foreach(Myclass item in IsList)
{
if(item.Name==do)
{
me= item;
you= item;
me.now=true;
you.now=true;
you.now=false;
}
}
}
ข้างบนเป็นตัวอย่างโค้ดสมมุตินะครับ โค้ดจริงๆ มันเยอะกว่านั้น
สมมุติ
ตัวแปร IsList มีค่าอยู่ 5 ตัว (ในโค้ดข้างบนผมยังไม่ใส่ แต่คิดว่าผมใส่ไปแล้วกำหนดอะไรเรียบร้อยแล้วกัน)
โดย ออบเจ็ต 5 ตัวจะแสดงรูปกิจวัตรแตกต่างกันออกไป โดยเก็บรูปที่จะแสดงในตัวแปร WhatDo
แล้วถ้า Myclass.now เป็นจริง จะแสดงรูปกิจวัตร เป็นเท็จ ปิดรูป
แต่ปัญหามันอยู่ตรงที่
me.now=true มันจะแสดงรูปกิจวัตร
you.now=true มันก็จะแสดงรูปกิจวัตร เหมือน me เพราะ อ้างอิงจากตัวแปรตัวเดียวกัน แต่มันไม่มีรูปซ้อนทับ
you.now=false มันก็ปิดรูป แต่มันดันไม่มีรูปกิจวัตรของ me บนจอ
ผมไม่เข้าใจง่ะครับ ทำไม มันไม่สร้างรูปภาพซ้อนทับกัน ทั้งๆที่ ตัวแปร me และ you คนล่ะตัวกัน
ถ้าเป็น
me.now=true
me.now=false
มันจะ เปิดรูปและปิดรูป โดยแสดงรูปใดรูปหนึ่ง
แต่ความเข้าใจของผมว่า
ถ้า สร้างตัวแปร 2 ตัว แต่เป็นตัวแปรชนิดเดียวกัน
มันน่าจะทำงานแยกกัน
me.now=true
you.now=false
ตัวแปร me ยังเปิดรูปอยู่ ก็แสดงรูปกิจวัตรต่อไป
แต่พอ you ปิดรูป มันดันไป ปิดรูปกิจวัตรของ me ด้วยซะงั้น
มันเป็นเพราะอะไรครับ