Q100385: பயனர் செயல்களின் அடிப்படையில் தனிப்பயன் செயல்பாட்டைச் சேர்க்க பைத்தானைப் பயன்படுத்தி Katana கால்பேக்குகள் மற்றும் நிகழ்வு கையாளுபவர்களை எவ்வாறு பதிவு செய்வது

சுருக்கம்

இந்தக் கட்டுரை Katana கால்பேக்குகள் அல்லது நிகழ்வு கையாளுபவர்களை எவ்வாறு பதிவு செய்வது என்பதை விளக்குகிறது, மேலும் கிடைக்கக்கூடிய கால்பேக் மற்றும் நிகழ்வு வகைகள் மற்றும் அவற்றின் கால்பேக் செயல்பாடுகளுக்கான எதிர்பார்க்கப்படும் உள்ளீட்டு வாதங்கள் பற்றிய தகவல்களை எங்கே கண்டுபிடிப்பது என்பது பற்றிய விவரங்களை வழங்குகிறது.
கால்பேக்குகள் மற்றும் நிகழ்வுகளுக்கான ஆவணங்களை Katana டெவலப்பர் வழிகாட்டியிலும் காணலாம். கீழே உள்ள கட்டுரை அவை எவ்வாறு செயல்படுத்தப்படுகின்றன என்பதற்கான சில நடைமுறை எடுத்துக்காட்டுகளை வழங்குகிறது.

மேலும் தகவல்

கால்பேக் என்பது Katana சூழலில் சேர்க்கப்படும் பைதான் குறியீட்டின் ஒரு பகுதியாகும், இது Katana பல்வேறு நிகழ்வுகள் (ஒரு முனையை உருவாக்குதல் அல்லது ஸ்கிரிப்டை ஏற்றுதல் போன்றவை) நிகழும்போது தானாகவே இயங்கும்.

ஒரு நிகழ்வு என்பது ஒரு பயனர் செயல் அல்லது சுட்டியைக் கிளிக் செய்வது அல்லது ஒரு விசையை அழுத்துவது போன்ற மற்றொரு மூலத்தின் விளைவாக நிகழும் ஒரு செயலாகும். நிகழ்வு கையாளுபவர் என்பது நிகழ்வைச் சமாளிக்கப் பயன்படுத்தப்படும் ஒரு வழக்கமாகும், இது ஒரு நிரலாளர் நிகழ்வு நிகழும்போது செயல்படுத்தப்படும் குறியீட்டை எழுத அனுமதிக்கிறது.

சில சூழ்நிலைகளில் (எ.கா. ஒரு கோப்பைச் சேமிப்பதற்கு சற்று முன்பு) Katana கால்பேக்குகள் தூண்டப்படுகின்றன, மேலும் தொடர்வதற்கு முன்பு அழைப்பு குறியீடு ஒரு கால்பேக் செயல்படுத்தப்படுவதற்காகக் காத்திருக்கிறது, எடுத்துக்காட்டாக, பயனர் திட்டத்தைச் சேமிக்கும் முன் அதை மாற்றியமைக்க அனுமதிக்கிறது.

மாறாக, நிகழ்வுகள் Katana நிகழ்வு அமைப்பால் வரிசைப்படுத்தப்பட்டு "பின்னர்" செயலாக்கப்படுகின்றன. இதன் பொருள் கால்பேக்குகள் மிகவும் உடனடியானவை, ஆனால் பொதுவாக மிக வேகமாகவும் இருக்க வேண்டும் அல்லது அவை வேலை செய்யும் போது UI ஐ முடக்கும் அபாயம் உள்ளது.

கால்பேக்குகள் மற்றும் நிகழ்வு கையாளுபவர்கள் இருவரும் பல சூழ்நிலைகளில் பயனுள்ளதாக இருக்கும், எடுத்துக்காட்டாக, புதிய Katana திட்டத்தை உருவாக்கும் போது திட்ட அமைப்புகளை மாற்ற அல்லது சில முனை அளவுருக்களின் மதிப்பு மாற்றங்களுக்கு எதிர்வினையாற்ற.

திரும்ப அழைத்தல்

Katana , மென்பொருள் தொடங்கப்படுவது, Katana திட்டம் ஏற்றப்படுவது அல்லது ஒரு முனை உருவாக்கப்படுவது போன்ற பல்வேறு சூழ்நிலைகளுக்கு கால்பேக்குகள் கிடைக்கின்றன. கிடைக்கக்கூடிய கால்பேக்குகளின் முழு பட்டியலையும் காண, பைதான் தாவலில் பின்வரும் குறியீட்டை இயக்கவும்:

from Katana import Callbacks
print(dir(Callbacks.Type))


ஒவ்வொரு கால்பேக் வகைக்கும் எந்த முக்கிய வார்த்தை வாதங்கள் அனுப்பப்படுகின்றன என்பதைக் கண்டறிய, நீங்கள் பின்வரும் கால்பேக்கைப் பதிவு செய்யலாம், இது அழைக்கப்படும்போது உள்ளீட்டு வாதங்களை அச்சிடும்:

def Hello(**kwargs):
for i in kwargs.keys():
print(i)

from Katana import Callbacks
Callbacks.addCallback(Callbacks.Type.onSceneLoad, Hello)


இந்த வாதங்களை கால்பேக் செயல்பாட்டிற்குள் அணுகலாம், எடுத்துக்காட்டாக பின்வருமாறு:

def Hello(**kwargs):
   print(kwargs.get('filename'))

from Katana import Callbacks Callbacks.addCallback(Callbacks.Type.onSceneLoad, Hello)

நிகழ்வு கையாளுபவர்கள்

Katana பதிவுசெய்யப்பட்ட கையாளுபவர்கள் கேட்கக்கூடிய பல வகையான நிகழ்வுகள் உள்ளன. கிடைக்கக்கூடிய அனைத்து நிகழ்வு வகைகளின் பட்டியலையும் காண, பைதான் தாவலில் பின்வருவனவற்றை இயக்கவும்:

 from Katana import Utils
print ( sorted ( Utils . EventModule . GetAllRegisteredEventTypes ()))

ஒவ்வொரு நிகழ்வு வகைக்கும் எந்த உள்ளீட்டு வாதங்கள் உள்ளன என்பதைக் கண்டறிய, ஒரு குறிப்பிட்ட நிகழ்வுக்கு பின்வரும் கையாளுபவரை நீங்கள் பதிவு செய்யலாம். நிகழ்வு தூண்டப்படும்போது, கையாளுபவர் வாதங்களை அச்சிடுவார். "node_create" நிகழ்வு வகைக்கான உள்ளீட்டு வாதங்களை அச்சிடும் ஒரு எடுத்துக்காட்டு பின்வருமாறு:

def node_CreateCallback(eventType, eventID, **kwargs):
    for i in kwargs.keys():
        print(i)

Utils.EventModule.RegisterEventHandler(node_CreateCallback, 'node_create')


உள்ளீட்டு வாதங்கள் தெரிந்தவுடன், அவற்றை நிகழ்வு கையாளுபவரின் செயல்பாட்டிற்குள் பயன்படுத்தலாம். பயனர் விருப்பத்தேர்வுகளில் ஏற்படும் மாற்றங்களைக் கேட்க பதிவுசெய்யக்கூடிய ஒரு எடுத்துக்காட்டு நிகழ்வு கையாளுபவர் பின்வருகிறார், மேலும் இது விருப்பத்தேர்வின் பெயரையும் அதன் புதிய மதிப்பையும் அச்சிடும்:

def PrefChangedCallback(eventType, eventID, prefKey, prefValue):
    print(prefKey, "preference changed to:", prefValue)

Utils.EventModule.RegisterEventHandler(PrefChangedCallback, 'pref_changed')

முனை அளவுரு மாற்றங்களுக்கான நிகழ்வு கையாளுபவர்

உதாரணமாக, ஒரு நிகழ்வு கையாளுதல் செயல்பாடு ஒரு குறிப்பிட்ட முனை அளவுருவின் மாற்றத்திற்கு மட்டுமே எதிர்வினையாற்ற வேண்டும் என்றால், அதை parameter_finalizeValue நிகழ்வைக் கேட்க பதிவு செய்யலாம். மாற்றப்பட்ட அளவுருவின் பெயரை ஹேண்ட்லர் செயல்பாட்டிற்குள் சரிபார்த்து, அது பொருத்தமானதா என்பதைத் தீர்மானிக்கலாம்:

def myParamCallback(eventType, eventID, node, param):
    if (node.getName() == "CameraCreate") and (param.getName() == 'fov'):
        print("FOV for the following camera changed to " + repr(param.getValue(0)) + ": " + node.getParameter('name').getValue(0))

Utils.EventModule.RegisterEventHandler(myParamCallback, "parameter_finalizeValue")

நிகழ்வு வரிசைப்படுத்தப்பட்ட உடனேயே நிகழ்வு கையாளுபவர்கள் செயல்படுத்தப்பட வேண்டிய அவசியமில்லை. எந்தவொரு குறியீடும் ஒரு குறிப்பிட்ட நிகழ்வு செயலாக்கப்பட்டு நிகழ்வு கையாளுபவர்கள் செயல்படுத்தப்பட்டிருப்பதைச் சார்ந்திருந்தால், பின்வருவனவற்றை அழைப்பது அவசியமாக இருக்கலாம்:

Utils.EventModule.ProcessAllEvents() 


கால்பேக்குகள் மற்றும் நிகழ்வு கையாளுபவர்கள் பற்றிய கூடுதல் தகவலுக்கு, எங்கள் Katana டெவலப்பர் வழிகாட்டியின் கால்பேக்குகள் மற்றும் நிகழ்வுகள் பகுதியையும் பார்க்கவும்.

Katana தொடக்கத்தில் கால்பேக்குகள் அல்லது நிகழ்வு கையாளுபவர்களைப் பதிவு செய்தல்

Katana பின்வருமாறு தொடங்கும் போது கால்பேக்குகள் அல்லது நிகழ்வு கையாளுபவர்கள் தானாகவே பதிவு செய்யப்படலாம்:

  • உங்கள் கால்பேக் அல்லது நிகழ்வு கையாளுதல் செயல்பாடு ஒற்றை பைதான் செயல்பாட்டில் செய்ய விரும்பும் அனைத்து செயல்களையும் வரையறுத்து, கீழே உள்ள எடுத்துக்காட்டு குறியீட்டில் காட்டப்பட்டுள்ளபடி இதைப் பதிவு செய்யவும்:
from Katana import Utils, Callbacks

def PrefChangedCallback(eventType, eventID, prefKey, prefValue):
    print(prefKey, "preference changed to:", prefValue)

Utils.EventModule.RegisterEventHandler(PrefChangedCallback, 'pref_changed')
def Hello(**kwargs): print(kwargs.get('filename'))
Callbacks.addCallback(Callbacks.Type.onSceneLoad, Hello) 

  • இதை நகலெடுத்து ஒரு உரை திருத்தியில் ஒட்டவும், கோப்பை சேமிக்கவும்.

  • கோப்பை init.py என மறுபெயரிட்டு, உங்கள் கோப்பு உலாவியில் கோப்பு நீட்டிப்புகள் காட்டப்படுவதை உறுதிசெய்து கொள்ளுங்கள். இது கோப்பு நீட்டிப்பு .py என்பதையும் .txt அல்லது வேறுபட்டது அல்ல என்பதையும் சரிபார்க்க வேண்டும்.

  • கோப்பை .katana கோப்புறையிலோ அல்லது $KATANA_RESOURCES சூழல் மாறியில் வரையறுக்கப்பட்ட பாதையின் கீழ் உள்ள ஒரு தொடக்க கோப்புறையிலோ வைக்கவும்.


KATANA _RESOURCES பற்றிய கூடுதல் தகவலுக்கு, Katana நிறுவல் வழிகாட்டியில் தொடர்புடைய தலைப்பைப் பார்க்கவும்.

அடுத்த முறை Katana தொடங்கப்படும்போது, குறிப்பிட்ட செயல் நிகழும்போது திரும்ப அழைக்கும் செயல்பாடு செயல்படுத்தப்படும், மேலும் தொடர்புடைய நிகழ்வு வரிசைப்படுத்தப்பட்டு செயலாக்கப்படும்போது நிகழ்வு கையாளுதல் செயல்பாடு செயல்படுத்தப்படும். மேலே உள்ள எடுத்துக்காட்டில், ஒரு விருப்பம் மாற்றப்படும்போது அல்லது Katana திட்டம் ஏற்றப்படும்போது, புதிய முன்னுரிமை மதிப்பு அல்லது திட்ட கோப்பு பாதை முறையே முனையத்தில் அச்சிடப்படும்.

மேலும் உதவி

கால்பேக்குகள் மற்றும் நிகழ்வு கையாளுபவர்கள் பற்றிய கூடுதல் தகவலுக்கு, Katana டெவலப்பர் வழிகாட்டியின் கால்பேக்குகள் மற்றும் நிகழ்வுகள் பகுதியைப் பார்க்கவும்.

உங்கள் கால்பேக்குகள் அல்லது நிகழ்வு கையாளுபவர்களை அமைப்பதில் ஏதேனும் சிக்கல்களை எதிர்கொண்டால், தயவுசெய்து ஒரு ஆதரவு டிக்கெட்டைத் திறந்து, அந்தப் பிரச்சினை மற்றும் நீங்கள் இதுவரை எடுத்துள்ள சரிசெய்தல் நடவடிக்கைகள் குறித்து எங்களுக்குத் தெரியப்படுத்துங்கள்.


ஆதரவு டிக்கெட்டை எவ்வாறு திறப்பது என்பது பற்றிய கூடுதல் தகவலுக்கு, தயவுசெய்து Q100064 ஐப் பார்க்கவும்: ஆதரவு டிக்கெட்டை எவ்வாறு பெறுவது

    We're sorry to hear that

    Please tell us why