Thank you for your interest in contributing to this project! This document provides guidelines and instructions for contributing.
Please be respectful and constructive in all interactions. We're all here to learn and improve.
- Search existing issues first to avoid duplicates
- Create a new issue with a clear, descriptive title
- Include details:
- Unity version
- iOS version
- Device model
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs or screenshots
- Open an issue describing the feature
- Explain the use case - why is this feature needed?
- Provide examples if possible
- Fork the repository
- Create a feature branch from
main:git checkout -b feature/your-feature-name
- Make your changes following the coding guidelines below
- Test your changes on an iOS device if possible
- Commit with clear messages:
git commit -m "Add feature: description of what was added" - Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request with:
- Clear description of changes
- Reference to any related issues
- Screenshots/videos for UI changes
- Use PascalCase for public members and types
- Use camelCase with underscore prefix for private fields (
_privateField) - Use XML documentation comments for public APIs
- Keep methods focused and single-purpose
- Use
#if UNITY_IOSfor platform-specific code
/// <summary>
/// Brief description of what this does.
/// </summary>
/// <param name="paramName">Description of parameter.</param>
/// <returns>Description of return value.</returns>
public static void ExampleMethod(int paramName)
{
#if UNITY_IOS
// iOS-specific implementation
#else
Debug.LogWarning("This feature is only available on iOS.");
#endif
}- Avoid allocations in frequently-called methods
- Use
[SerializeField]for inspector-exposed private fields - Include
[Tooltip("...")]attributes for clarity - Clean up event subscriptions in
OnDisable/OnDestroy
unity-ios-input-plugin/
├── Assets/
│ ├── Plugins/iOS/ # Native iOS library
│ ├── Scripts/ # C# bridge classes
│ └── Scenes/ # Sample scenes
├── package.json # UPM package manifest
├── README.md # Project documentation
├── CONTRIBUTING.md # This file
├── CHANGELOG.md # Version history
└── LICENSE # GPL v3 license
-
Clone the repository:
git clone https://github.com/manaporkun/unity-ios-input-plugin.git
-
Open the project in Unity 2022.3 or later
-
For native library changes, see the gc-input-events repository
- Test on actual iOS hardware when possible
- Verify compilation works on all target platforms
- Check that events fire correctly for all input types
- Test event subscription/unsubscription lifecycle
Feel free to open an issue for any questions about contributing.
By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.0.