আমি এখানে যা বুঝতে এবং শিখতে চেষ্টা করছি এটি একটি খুব প্রাথমিক বিষয়: সি # ব্যবহার করে ইউনিটির 3 প্রধান মাউস বোতামের জন্য একক-ক্লিকগুলি এবং ডাবল-ক্লিকগুলিকে সঠিকভাবে আলাদা করার সর্বাধিক সাধারণ এবং সর্বাধিক পালিশ উপায় কী?
শব্দ আমার জোর সঠিকভাবে কিছুই জন্য নয়। যদিও আমি অবাক হয়েছিলাম যে এই ওয়েবসাইটটিতে এর আগে কখনও জিজ্ঞাসা করা হয়নি বলে মনে হয়েছিল, অবশ্যই আমি ইউনিটির ফোরাম এবং ইউনিটির নিজস্ব প্রশ্নোত্তর পাতায় এই জাতীয় অসংখ্য প্রশ্ন অনুসন্ধান করেছি এবং খুঁজে পেয়েছি। যাইহোক, এই সংস্থানগুলিতে পোস্ট করা উত্তরগুলির ক্ষেত্রে প্রায়শই এটি হ'ল এগুলি সমস্তই স্পষ্টত ভুল বা কমপক্ষে কিছুটা অপেশাদার বলে মনে হয়েছিল।
আমাকে ব্যাখ্যা করতে দাও. প্রস্তাবিত সমাধানগুলির মধ্যে সর্বদা দুটি পদ্ধতির এবং এর সাথে সম্পর্কিত ত্রুটিগুলির একটি ছিল:
- প্রতিবার একটি ক্লিক হওয়ার পরে, শেষ ক্লিকের পর থেকে সময় ব-দ্বীপ গণনা করুন এবং যদি এটি একটি প্রদত্ত প্রান্তিকের চেয়ে ছোট ছিল, একটি ডাবল ক্লিক শনাক্ত করা হবে। যাইহোক, এই সমাধানের ফলে ডাবল-ক্লিক শনাক্ত হওয়ার আগে দ্রুত একক ক্লিক সনাক্ত করা যায় যা বেশিরভাগ পরিস্থিতিতেই অনাকাঙ্ক্ষিত কারণ এটি তখন একক এবং ডাবল ক্লিক ক্রিয়া উভয়ই সক্রিয় করে।
রুক্ষ উদাহরণ:
float dclick_threshold = 0.25f;
double timerdclick = 0;
if (Input.GetMouseButtonDown(0)
{
if (Time.time - timerdclick) > dclick_threshold)
{
Debug.Log("single click");
//call the SingleClick() function, not shown
} else {
Debug.Log("double click");
//call the DoubleClick() function, not shown
}
timerdclick = Time.time;
}
- একক-ক্লিকটি সক্রিয় হওয়ার জন্য অপেক্ষার জন্য বিলম্ব নির্ধারণ করুন, যার অর্থ, প্রতিটি ক্লিকে কেবলমাত্র একক ক্লিক ক্রিয়াকলাপ সক্রিয় করুন যদি শেষ ক্লিকটি প্রদত্ত প্রান্তিকের চেয়ে বেশি সময় ব্যয় হয়। তবে এটি স্বচ্ছন্দ ফলাফল দেয়, যেহেতু একক-ক্লিকগুলি সনাক্ত হওয়ার আগে অপেক্ষাটি লক্ষ্য করা সম্ভব। তার চেয়েও খারাপ, এই ধরণের সমাধানটি মেশিনগুলির মধ্যে বিভেদগুলির সাথে ভুগছে, যেহেতু এটি OS অ্যাকাউন্টে ব্যবহারকারীর ডাবল-ক্লিকের গতি সেটিংটি কতটা ধীর বা কত গতিযুক্ত তা বিবেচনায় নেই।
রুক্ষ উদাহরণ:
float one_click = false;
float dclick_threshold = 0.25f;
double timerdclick = 0;
if (one_click && ((Time.time - timerdclick) > dclick_threshold))
{
Debug.Log("single click");
//call the SingleClick() function, not shown
one_click = false;
}
if (Input.GetMouseButtonDown(0))
{
if (!one_click)
{
dclick = -1;
timerdclick = Time.time;
one_click = true;
}
else if (one_click && ((Time.time - timerdclick) < dclick_threshold))
{
Debug.Log("double click");
//call the DoubleClick() function, not shown
one_click = false;
}
}
সুতরাং, আমার প্রশ্নগুলি নিম্নলিখিত হয়ে যায়। এই সমাধানগুলি ব্যতীত সি # ব্যবহার করে ইউনিটিতে ডাবল ক্লিকগুলি সনাক্ত করার আরও কি কোনও পালিশ এবং নির্ভরযোগ্য উপায় রয়েছে এবং সমস্যাগুলির উপরে বর্ণিত সমস্যাগুলি পরিচালনা করে?