एडिटर कंपोनेंट का स्वतः जनरेशन
जब आप Unity या Blender में काम करते हैं, तो आप देखेंगे कि जब आप Typescript या Javascript में एक नया Needle Engine कंपोनेंट बनाते हैं, तो यह स्वचालित रूप से आपके लिए एक Unity C# स्टब कंपोनेंट या एक Blender पैनल जनरेट करेगा।
यह Needle कंपोनेंट कंपाइलर के जादू के कारण होता है जो एक एडिटर वातावरण में पर्दे के पीछे चलता है और आपकी स्क्रिप्ट फ़ाइलों में बदलावों को देखता है। जब यह नोटिस करता है कि आपने एक नया Needle Engine कंपोनेंट बनाया है, तो यह सही Unity कंपोनेंट या Blender पैनल जनरेट करेगा, जिसमें पब्लिक वेरिएबल्स या प्रॉपर्टीज़ शामिल होंगी जिन्हें आप एडिटर के भीतर से सेट या लिंक कर सकते हैं।
कंपोनेंट जनरेशन को नियंत्रित करना
C# कोड जनरेशन के व्यवहार को नियंत्रित करने के लिए आप अपने Typescript कोड में निम्नलिखित टिप्पणियों (comments) का उपयोग कर सकते हैं:
एट्रीब्यूट (Attribute) | परिणाम (Result) |
---|---|
// @generate-component | अगली क्लास का जनरेशन फोर्स करें |
// @dont-generate-component | अगली क्लास का जनरेशन डिसेबल करें, यह उन मामलों में उपयोगी है जहाँ आपके प्रोजेक्ट में पहले से ही एक मौजूदा C# स्क्रिप्ट है |
// @serializeField | जनरेट किए गए फ़ील्ड को [SerializeField] से डेकोरेट करें |
// @type UnityEngine.Camera | जनरेट किए गए C# फ़ील्ड का टाइप स्पेसिफाई करें |
// @nonSerialized | अगले फ़ील्ड या मेथड का जनरेशन स्किप करें |
उदाहरण
कंपोनेंट कंपाइलर को myAudioClip
नाम का C# AudioClip फ़ील्ड जनरेट करने के लिए फोर्स करें
import { Behaviour, serializable } from "@needle-tools/engine";
export class MyComponent extends Behaviour {
//@type UnityEngine.AudioClip
@serializable()
myAudioClip?: string;
}
कंपोनेंट कंपाइलर को एक विशिष्ट सबक्लास से डिराइव करने के लिए फोर्स करें
import { Behaviour } from "@needle-tools/engine";
export class MyCustomBaseClass extends Behaviour { /* ... */ }
// ---cut-before---
//@type MyNamespace.MyCustomBaseClass
export class MyComponent extends MyCustomBaseClass {
}
Unity में कंपोनेंट कंपाइलर
यदि आप अपने प्रोजेक्ट में src/scripts
फ़ोल्डर के अंदर स्क्रिप्ट जोड़ना चाहते हैं, तो आपको अपने ExportInfo
कंपोनेंट वाले GameObject पर एक Component Generator
रखना होगा। अब जब आप your/threejs/project/src/scripts
में नए कंपोनेंट जोड़ेंगे, तो यह Assets/Needle/Components.codegen
में स्वचालित रूप से Unity स्क्रिप्ट जनरेट करेगा। यदि आप किसी भी NpmDef फ़ाइल में स्क्रिप्ट जोड़ना चाहते हैं तो आप बस उन्हें बना सकते हैं - प्रत्येक NpmDef स्वचालित रूप से स्क्रिप्ट बदलावों को देखता है और कंपोनेंट जनरेशन को संभालता है, इसलिए आपको अपने सीन में किसी अतिरिक्त कंपोनेंट की आवश्यकता नहीं है।
C# फ़ील्ड को सही ढंग से जनरेट करने के लिए, वर्तमान में यह महत्वपूर्ण है कि आप स्पष्ट रूप से एक Typescript टाइप घोषित करें। उदाहरण के लिए myField : number = 5
आप नीचे दिए गए टैब का उपयोग करके Typescript इनपुट और जनरेट किए गए C# स्टब कंपोनेंट के बीच स्विच कर सकते हैं :::: code-group ::: code-group-item Typescript
import { AssetReference, Behaviour, serializable } from "@needle-tools/engine";
import { Object3D } from "three";
export class MyCustomComponent extends Behaviour {
@serializable()
myFloatValue: number = 42;
@serializable(Object3D)
myOtherObject?: Object3D;
@serializable(AssetReference)
prefabs: AssetReference[] = [];
start() {
this.sayHello();
}
private sayHello() {
console.log("Hello World", this);
}
}
::: ::: code-group-item जनरेटेड C#
// NEEDLE_CODEGEN_START
// auto generated code - do not edit directly
#pragma warning disable
namespace Needle.Typescript.GeneratedComponents
{
public partial class MyCustomComponent : UnityEngine.MonoBehaviour
{
public float @myFloatValue = 42f;
public UnityEngine.Transform @myOtherObject;
public UnityEngine.Transform[] @prefabs = new UnityEngine.Transform[]{ };
public void start(){}
public void update(){}
}
}
// NEEDLE_CODEGEN_END
::: ::: code-group-item जनरेटेड C# का विस्तार करना
using UnityEditor;
// you can add code above or below the NEEDLE_CODEGEN_ blocks
// NEEDLE_CODEGEN_START
// auto generated code - do not edit directly
#pragma warning disable
namespace Needle.Typescript.GeneratedComponents
{
public partial class MyCustomComponent : UnityEngine.MonoBehaviour
{
public float @myFloatValue = 42f;
public UnityEngine.Transform @myOtherObject;
public UnityEngine.Transform[] @prefabs = new UnityEngine.Transform[]{ };
public void start(){}
public void update(){}
}
}
// NEEDLE_CODEGEN_END
namespace Needle.Typescript.GeneratedComponents
{
// This is how you extend the generated component (namespace and class name must match!)
public partial class MyCustomComponent : UnityEngine.MonoBehaviour
{
public void MyAdditionalMethod()
{
}
private void OnValidate()
{
myFloatValue = 42;
}
}
// of course you can also add custom editors
[CustomEditor(typeof(MyCustomComponent))]
public class MyCustomComponentEditor : Editor
{
public override void OnInspectorGUI()
{
EditorGUILayout.HelpBox("This is my sample component", MessageType.None);
base.OnInspectorGUI();
}
}
}
::: ::::
जनरेट किए गए कंपोनेंट का विस्तार करना
कंपोनेंट C# क्लास partial
फ़्लैग के साथ जनरेट किए जाते हैं ताकि उन्हें फंक्शनैलिटी के साथ आसानी से बढ़ाया जा सके। यह गिज़्मो बनाने, संदर्भ मेनू जोड़ने या अतिरिक्त फ़ील्ड या मेथड जोड़ने में सहायक होता है जो बिल्ट-इन कंपोनेंट का हिस्सा नहीं हैं।
मेंबर केसिंग
एक्सपोर्ट किए गए सदस्य छोटे अक्षर से शुरू होंगे। उदाहरण के लिए, यदि आपके C# सदस्य का नाम MyString
है, तो उसे myString
असाइन किया जाएगा।
यह पृष्ठ AI का उपयोग करके स्वचालित रूप से अनुवादित किया गया है।